首页 > 其他分享 >DES加密的verilog代码

DES加密的verilog代码

时间:2022-12-24 23:22:06浏览次数:50  
标签:bit48 加密 temp DES LR verilog 64 cycnum reg

`timescale 1ns / 1ps

//

// Company:

// Engineer:

//

// Create Date: 14:36:27 06/21/2009

// Design Name:

// Module Name: DESencode

// Project Name:

// Target Devices:

// Tool versions:

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//

module DESencode(clk,datain,key,code);

input clk; //系统时钟信号

input [1:64]key; //密钥

input [1:64]datain; //要加密的数据

output [1:64]code; //加密后的密码

reg [1:64]code;

reg [4:1]cycnum; //用于记录循环的次数

reg [1:64]LR_reg;

reg [1:64]LR_temp;

wire [1:64]LR;

wire [1:48]bit48;

wire [1:32]bit32;

wire [1:48]sub;

wire [1:32]R_temp;

always@(negedge clk)

begin

cycnum=cycnum+1; //每个时钟周期循环次数加1

LR_temp=LR_reg;

LR_reg[1:32]=LR_temp[33:64]; //右边寄存器的值作为下一次左边寄存器的值

LR_reg[33:64]=LR_temp[1:32]^R_temp; //左边寄存器的值摩尔加置换运算P的结果作为下一次循环右边寄存器的值

end

always@(LR)

begin

LR_reg=LR; //将初始IP变换的值存入左右寄存器中

cycnum=4'h0; //同时循环的次数置0

end

IPexchange M1(.data(datain),.out64(LR)); //初始换位IP

Eexpand M2(.bit32(LR_reg[33:64]),.bit48(bit48)); //选择扩展运算E

subkey M3(.datain(key),.cycnum(cycnum),.key(sub)); //子密钥生成模块

Scompress M4(.bit48(bit48^sub),.bit32(bit32)); //选择压缩运算S

Pexchange M5(.inbit(bit32),.outbit(R_temp)); //置位运算P

IP_inverse_exchange M6(.in64(LR_reg),.cycnum(cycnum),.out64(code)); //逆变换IP_inverse

 

endmodule

标签:bit48,加密,temp,DES,LR,verilog,64,cycnum,reg
From: https://www.cnblogs.com/matlabfpga/p/17003543.html

相关文章

  • Zip伪加密
    原理:一个zip文件由三部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志。具体含义请参照大佬的博客,解释的很详细。http://blog.csdn.net/wclxyn/article......
  • Verilog语言的循环语句
    关键词:while,for,repeat,foreverVerilog循环语句有4种类型,分别是while,for,repeat,和forever循环。循环语句只能在always或initial块中使用,但可以包含延迟表达式......
  • 恶意软件加密通信概要分析——端口分布、协议分布、恶意软件类型分布,20年的文章
    恶意软件加密通信概要分析主编 • 2020年1月9日上午10:51 • 恶意软件, 网络攻击 • 阅读20800恶意加密流量是当前流量安全检测的难点和难点。机器学习可以......
  • HDLBits--Verilog习题记录2
    2.veriloglanguage--moreverilogfeatures--Generateforloop:100-digitBCDadder题目:YouareprovidedwithaBCDone-digitaddernamed bcd_fadd thataddst......
  • HDLBits--Verilog习题记录1
    本文档是Verilog编程题的解题记录 1.VerilogLanguage--moreVerilogfeatures---Generatefor-loop:100-bitbinaryadder2题目说明:Createa100-bitbinaryripple-c......
  • 在Dubbo-go中使用TLS加密进行安全通信
    1背景Dubbo-go在Getty/Triple/Grpc三个通信层面支持TLS链路安全通信。2原理2.1证书机制:ps:可以先提前了解非对称加密机制。CA(CertificationAuthority)负责生成根证书......
  • Verilog的多分支语句
    关键词:case,选择器case语句是一种多路条件分支的形式,可以解决if语句中有多个条件选项时使用不方便的问题。case语句case语句格式如下:case(case_expr)condition1......
  • 分组加密——多组加密模式
    分组加密——多组加密模式电子密码本EBCECB模式是将明文分成固定长度的组块,然后对每个明文分组块使用相同的密钥进行独立加密或解密,且该加密的结果将直接作为密文分组。......
  • PyDESeq2使用
    PyDESeq2Python版的DESeq2已上线,以后就可以使用Python来做差异分析了。目前文章还在bioRxiv。我来简单尝尝鲜。安装使用mamba或者conda来新建一个虚拟环境,然后使用pip安......
  • 关于jsjiami.v6加密和解密
    JavaScript解密是指在JavaScript代码被加密之后,使用特定的工具或方法来恢复其原有的可读性。这种技术通常用于对JavaScript代码进行保护,以防止代码被未经授权的人窃取......