173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

简单加密算法编程实验

keros@mark 2022-10-29 资讯中心

今天给各位分享简单加密算法编程实验的知识,如果能碰巧解决你现在面临的问题,别忘了关注本站。

本文目录一览

局域网聊天工具的加密算法

aes

aes加密、解密算法原理和AVR实现

aes是分组密钥,算法输入128位数据,密钥长度也是128位。用Nr表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表1所列)。每一轮都需要一个与输入分组具有相同长度的扩展密钥Expandedkey(i)的参与。由于外部输入的加密密钥K长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。

1.1圈变化

aes每一个圈变换由以下三个层组成:

非线性层——进行Subbyte变换;

线行混合层——进行ShiftRow和MixColumn运算;

密钥加层——进行AddRoundKey运算。

① Subbyte变换是作用在状态中每个字节上的一种非线性字节转换,可以通过计算出来的S盒进行映射。

Schange:

ldi zh,$01;将指针指向S盒的首地址

mov zl,r2;将要查找的数据作为指针低地址

ldtemp,z+;取出这个对应的数据

mov r2,temp;交换数据完成查表

.

.

.

ret

② ShiftRow是一个字节换位。它将状态中的行按照不同的偏移量进行循环移位,而这个偏移量也是根据Nb的不同而选择的[3]。

shiftrow:;这是一个字节换位的子程序

mov temp,r3;因为是4×4

mov r3,r7; r2 r6 r10 r14 r2 r6 r10 r14

mov r7,r11; r3 r7 r11 r15---r7 r11 r15 r3

mov r11,r15; r4 r8 r12 r17 r12 r17 r4 r8

mov r15,temp; r5 r9 r13 r18 r18 r5 r9 r13

mov temp,r4

mov temp1,r8

mov r4,r12

mov r8,r17

mov r12,temp

mov r17,temp1

mov temp,r18

mov r18,r13

mov r13,r9

mov r9,r5

mov r5,temp

ret

③ 在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式a(x)与固定多项式c(x)相乘的结果。b(x)=c(x)*a(x)的系数这样计算:*运算不是普通的乘法运算,而是特殊的运算,即

b(x)=c(x)·a(x)(mod x4+1)

对于这个运算

b0=02。a0+03。a1+a2+a3

令xtime(a0)=02。a0

其中,符号“。”表示模一个八次不可约多项式的同余乘法[3]。

mov temp,a0;这是一个mixcolimn子程序

rcall xtime;调用xtime程序

mov a0,temp

mov temp,a1

rcall xtime

eor a0,a1

eor a0,temp

eor a0,a2

eor a0,a3;完成b(x)的计算

.

.

.

xtime:;这是一个子程序

ldi temp1,$1b

lsl temp

brcs next1;如果最高位是1,则转移

next: ret;否则什么也不变化

next1:eor temp,temp1

rjmp next

对于逆变化,其矩阵C要改变成相应的D,即b(x)=d(x)*a(x)。

④ 密钥加层运算(addround)是将圈密钥状态中的对应字节按位“异或”。

⑤ 根据线性变化的性质[1],解密运算是加密变化的逆变化。这里不再详细叙述。

1.2轮变化

对不同的分组长度,其对应的轮变化次数是不同的,如表1所列。

1.3密钥扩展

aes算法利用外部输入密钥K(密钥串的字数为Nk),通过密钥的扩展程序得到共计4(Nr+1)字的扩展密钥。它涉及如下三个模块:

① 位置变换(rotword)——把一个4字节的序列[A,B,C,D]变化成[B,C,D,A];

② S盒变换(subword)——对一个4字节进行S盒代替;

③ 变换Rcon[i]——Rcon[i]表示32位比特字[xi-1,00,00,00]。这里的x是(02),如

Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]……

扩展密钥的生成:扩展密钥的前Nk个字就是外部密钥K;以后的字W[[i]]等于它前一个字W[[i-1]]与前第Nk个字W[[i-Nk]]的“异或”,即W[[i]]=W[[i-1]] W[[i- Nk]]。但是若i为Nk的倍数,则W[i]=W[i-Nk] Subword(Rotword(W[[i-1]])) Rcon[i/Nk]。

程序执行的时候,主要调用以上几个子程序,具体实现如下:

Keyexpansion:

rcall rotwoed

rcall subword

rcall Rcon

.

.

.

aes的加密与解密流程如图1所示。

图1aes的加密和解密流程

2 aes加密、解密算法的优化

由以上算法的流程中可以清楚地看到,整个算法中程序耗时最多的就是圈变化部分,因此对于算法的优化也就在此;而圈变化部分可以优化的也就是列变化。因为列变化是一个模乘同余规则。由于aes加密和解密是不对称的,如果不对其进行优化,会使算法的解密速度远远大于加密的速度[1]。

① 加密运算。对列变换(Mixcolumn)可以通过调用xtime子程序进行优化。具体算法[1]实现如下:

另一种有效的优化方法就是离线构造一个表格,即列变化表格。这样只要通过查表的方式就可以提高加密速度。

② 解密算法的优化。由于解密的列变换的系数分别是09、0E、0B和0D。在AVR单片机上实现以上的乘法显然是需要很多的时间,从而导致了解密的性能降低。

优化方法一:对列变化进行分解使倍乘次数降低。

仔细研究解密矩阵的系数,不难发现解密矩阵和加密矩阵有着一定的联系,即解密矩阵等于加密矩阵和一个矩阵的相乘。通过这样的联系,就可以对算法进行优化:

这样一来,只用几个简单的“异或”就可以实现列变化,使倍乘的次数降低,提高解密的速度。

优化方法二:构造表格。

同加密构造方法一样,可以构造四个表格T[ea]=e×a; T[9a]=9×a;T[9a]=9×a;T[ba]=b×a。这样一来,也只需要进行查表和简单的异或就可以完成解密的任务。虽然这种方法将增加额外的开销,但是它却是一种有效的方法。

3 aes加密与解密的实验仿真

根据以上实验步骤和优化方法得出表2、3所列实验结果。

设主密钥为:000102030405060708090a0b0c0d0e0f(128bit)。

加密明文:00112233445566778899AABBCCDDEEFF。

密文:69C4E0D86A7B0430D8CDB78070B4C55A。

解密密文:69C4E0D86A7B0430D8CDB78070B4C55A。

明文:00112233445566778899AABBCCDDEEFF。

总之,aes密码是一个非对称密码体制,它的解密要比加密复杂和费时。解密优化算法没有增加存储空间的基础上,以列变化为基础进行处理,程序比原始的要小,而且节约了时间。解密优化方法速度最快,效率最高,但要增加系统的存储空间,因此它的程序也是最大的一个。

注:aes128数据加密解密程序见本刊网站()。

结语

aes高级数据加密算法不管是从安全性、效率,还是密钥的灵活性等方面都优于DES数据加密算法,在今后将逐步代替DES而被广泛应用。本文基于AVR的高速计算性能实现了aes算法,并结合汇编语言进行了算法的优化。根据实际应用的具体需要,可以选用相应的方法。

60分求简单的RSA加密算法,要求是C或者C++编写的!

#includeiostream

#includecmath

using namespace std;

void main()

{

int p,q;

cout"请输入两个较大的素数:"endl;

cinpq;

cout"p="p",q="qendl;

int n,o;

n=p*q;

o=(p-1)*(q-1);

cout"n="n",o="oendl;

cout"请从【0,"o-1"】中选择一个与"o"互素的数e:"endl;

int e,i;

float d;

cine;

for(i=1;;i++)

{

d=(float)(o*i+1)/e;

if(d-(int)d==0)

break;

}

cout"e="e",d="dendl;

cout"公开密钥Pk={e,n}={"e","n"}"endl;

cout"秘密密钥Sk={d,n}={"d","n"}"endl;

coutendl;

cout"请输入要加密的正整数(以-1结束):"endl;

int m1[500],m3[500],m4[500];

double m2[500];

int j;

for(j=0;j500;j++)

{

cinm1[j];

if(m1[j]==-1)

break;

m2[j]=pow(m1[j],e);

m4[j]=m2[j]/n;

m3[j]=m2[j]-m4[j]*n;

}

cout"密文为:"endl;

int k;

for(k=0;kj;k++)

coutm3[k]" ";

coutendl;

}

看看行不?

各位大虾指教

单片机原理的加密方法

科研成果保护是每一个科研人员最关心的事情,加密方法有软件加密,硬件加密,软硬件综合加密,时间加密,错误引导加密,专利保护等措施有矛就有盾,有盾就有矛,有矛有盾,才促进矛盾质量水平的提高加密只讲盾,也希望网友提供更新的加密思路,现先讲一个软件加密:利用MCS-51 中A5 指令加密,其实世界上所有资料,包括英文资料都没有讲这条指令,其实这是很好的加密指令A5 功能是二字节空操作指令加密方法在A5 后加一个二字节或三字节操作码,因为所有反汇编软件都不会反汇编A5 指令,造成正常程序反汇编乱套,执行程序无问题仿制者就不能改变你的源程序。

硬件加密:8031/8052单片机就是8031/8052掩模产品中的不合格产品,内部有ROM,可以把8031/8052 当8751/8752 来用,再扩展外部程序器,然后调用8031 内部子程序当然你所选的同批8031芯片的首地址及所需用的中断入口均应转到外部程序区。

硬件加密

用高电压或激光烧断某条引脚,使其读不到内部程序,用高电压会造成一些器件损坏重要RAM 数据采用电池(大电容,街机采用的办法)保护,拔出芯片数据失去机器不能起动,或能初始化,但不能运行。

用真假方法加密

擦除芯片标识

把8X52单片机,标成8X51 单片机,并用到后128B的RAM 等方法,把AT90S8252 当AT89C52,初始化后程序段中并用到EEPROM 内容,你再去联想吧!

用激光(或丝印)打上其它标识如有的单片机引脚兼容,有的又不是同一种单片机,可张冠李戴,只能意会了,这要求你知识面广一点 。

用最新出厂编号的单片机,如2000 年后的AT89C 就难解密,或新的单片机品种,如AVR 单片机。

DIP 封装改成PLCC,TQFP,SOIC,BGA等封装,如果量大可以做定制ASIC,或软封装,用不需外晶振的单片机工作(如AVR 单片机中的AT90S1200),使用更复杂的单片机,FPGA+AVR+SRAM=AT40K系列。

硬件加密与软件加密只是为叙说方便而分开来讲,其实它们是分不开的,互相支撑,互相依存的软件加密:其目的是不让人读懂你的程序,不能修改程序,你可以………….....

利用单片机未公开,未被利用的标志位或单元,作为软件标志位,如8031/8051有一个用户标志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址处加二字节或三字节操作码,在无程序的空单元也加上程序机器码,最好要加巧妙一点用大容量芯片,用市场上仿真器不能仿真的芯片,如内部程序为64KB 或大于64KB 的器件,如:AVR 单片机中ATmega103 的Flash 程序存储器为128KBAT89S8252/AT89S53中有EEPROM,关键数据存放在EEPROM 中,或程序初始化时把密码写到EEPROM 中,程序执行时再查密码正确与否,尽量不让人家读懂程序。关于单片机加密,讲到这里,就算抛砖引玉。

如何使用java对密码加密 加密方式aes

Java有相关的实现类:具体原理如下

对于任意长度的明文,aes首先对其进行分组,每组的长度为128位。分组之后将分别对每个128位的明文分组进行加密。

对于每个128位长度的明文分组的加密过程如下:

(1)将128位aes明文分组放入状态矩阵中。

(2)AddRoundKey变换:对状态矩阵进行AddRoundKey变换,与膨胀后的密钥进行异或操作(密钥膨胀将在实验原理七中详细讨论)。

(3)10轮循环:aes对状态矩阵进行了10轮类似的子加密过程。前9轮子加密过程中,每一轮子加密过程包括4种不同的变换,而最后一轮只有3种变换,前9轮的子加密步骤如下:

● SubBytes变换:SubBytes变换是一个对状态矩阵非线性的变换;

● ShiftRows变换:ShiftRows变换对状态矩阵的行进行循环移位;

● MixColumns变换:MixColumns变换对状态矩阵的列进行变换;

● AddRoundKey变换:AddRoundKey变换对状态矩阵和膨胀后的密钥进行异或操作。

最后一轮的子加密步骤如下:

● SubBytes变换:SubBytes变换是一个对状态矩阵非线性的变换;

● ShiftRows变换:ShiftRows变换对状态矩阵的行进行循环移位;

● AddRoundKey变换:AddRoundKey变换对状态矩阵和膨胀后的密钥进行异或操作;

(4)经过10轮循环的状态矩阵中的内容就是加密后的密文。

aes的加密算法的伪代码如下。

在aes算法中,AddRoundKey变换需要使用膨胀后的密钥,原始的128位密钥经过膨胀会产生44个字(每个字为32位)的膨胀后的密钥,这44个字的膨胀后的密钥供11次AddRoundKey变换使用,一次AddRoundKey使用4个字(128位)的膨胀后的密钥。

三.aes的分组过程

对于任意长度的明文,aes首先对其进行分组,分组的方法与DES相同,即对长度不足的明文分组后面补充0即可,只是每一组的长度为128位。

aes的密钥长度有128比特,192比特和256比特三种标准,其他长度的密钥并没有列入到aes联邦标准中,在下面的介绍中,我们将以128位密钥为例。

四.状态矩阵

状态矩阵是一个4行、4列的字节矩阵,所谓字节矩阵就是指矩阵中的每个元素都是一个1字节长度的数据。我们将状态矩阵记为State,State中的元素记为Sij,表示状态矩阵中第i行第j列的元素。128比特的明文分组按字节分成16块,第一块记为“块0”,第二块记为“块1”,依此类推,最后一块记为“块15”,然后将这16块明文数据放入到状态矩阵中,将这16块明文数据放入到状态矩阵中的方法如图2-2-1所示。

块0

块4

块8

块12

块1

块5

块9

块13

块2

块6

块10

块14

块3

块7

块11

块15

图2-2-1 将明文块放入状态矩阵中

五.AddRoundKey变换

状态矩阵生成以后,首先要进行AddRoundKey变换,AddRoundKey变换将状态矩阵与膨胀后的密钥进行按位异或运算,如下所示。

其中,c表示列数,数组W为膨胀后的密钥,round为加密轮数,Nb为状态矩阵的列数。

它的过程如图2-2-2所示。

图2-2-2 aes算法AddRoundKey变换

六.10轮循环

经过AddRoundKey的状态矩阵要继续进行10轮类似的子加密过程。前9轮子加密过程中,每一轮要经过4种不同的变换,即SubBytes变换、ShiftRows变换、MixColumns变换和AddRoundKey变换,而最后一轮只有3种变换,即SubBytes变换、ShiftRows变换和AddRoundKey变换。AddRoundKey变换已经讨论过,下面分别讨论余下的三种变换。

1.SubBytes变换

SubBytes是一个独立作用于状态字节的非线性变换,它由以下两个步骤组成:

(1)在GF(28)域,求乘法的逆运算,即对于α∈GF(28)求β∈GF(28),使αβ =βα = 1mod(x8 + x4 + x3 + x + 1)。

(2)在GF(28)域做变换,变换使用矩阵乘法,如下所示:

由于所有的运算都在GF(28)域上进行,所以最后的结果都在GF(28)上。若g∈GF(28)是GF(28)的本原元素,则对于α∈GF(28),α≠0,则存在

β ∈ GF(28),使得:

β = gαmod(x8 + x4 + x3 + x + 1)

由于g255 = 1mod(x8 + x4 + x3 + x + 1)

所以g255-α = β-1mod(x8 + x4 + x3 + x + 1)

根据SubBytes变换算法,可以得出SubBytes的置换表,如表2-2-1所示,这个表也叫做aes的S盒。该表的使用方法如下:状态矩阵中每个元素都要经过该表替换,每个元素为8比特,前4比特决定了行号,后4比特决定了列号,例如求SubBytes(0C)查表的0行C列得FE。

表2-2-1 aes的SubBytes置换表

它的变换过程如图2-2-3所示。

图2-2-3 SubBytes变换

aes加密过程需要用到一些数学基础,其中包括GF(2)域上的多项式、GF(28)域上的多项式的计算和矩阵乘法运算等,有兴趣的同学请参考相关的数学书籍。

2.ShiftRows变换

ShiftRows变换比较简单,状态矩阵的第1行不发生改变,第2行循环左移1字节,第3行循环左移2字节,第4行循环左移3字节。ShiftRows变换的过程如图2-2-4所示。

图2-2-4 aes的ShiftRows变换

3.MixColumns变换

在MixColumns变换中,状态矩阵的列看作是域GF(28)的多项式,模(x4+1)乘以c(x)的结果:

c(x)=(03)x3+(01)x2+(01)x+(02)

这里(03)为十六进制表示,依此类推。c(x)与x4+1互质,故存在逆:

d(x)=(0B)x3+(0D)x2+(0G)x+(0E)使c(x)•d(x) = (D1)mod(x4+1)。

设有:

它的过程如图2-2-5所示。

图2-2-5 aes算法MixColumns变换

七.密钥膨胀

在aes算法中,AddRoundKey变换需要使用膨胀后的密钥,膨胀后的密钥记为子密钥,原始的128位密钥经过膨胀会产生44个字(每个字为32位)的子密钥,这44个字的子密钥供11次AddRoundKey变换使用,一次AddRoundKey使用4个字(128位)的膨胀后的密钥。

密钥膨胀算法是以字为基础的(一个字由4个字节组成,即32比特)。128比特的原始密钥经过膨胀后将产生44个字的子密钥,我们将这44个密钥保存在一个字数组中,记为W[44]。128比特的原始密钥分成16份,存放在一个字节的数组:Key[0],Key[1]……Key[15]中。

在密钥膨胀算法中,Rcon是一个10个字的数组,在数组中保存着算法定义的常数,分别为:

Rcon[0] = 0x01000000

Rcon[1] = 0x02000000

Rcon[2] = 0x04000000

Rcon[3] = 0x08000000

Rcon[4] = 0x10000000

Rcon[5] = 0x20000000

Rcon[6] = 0x40000000

Rcon[7] = 0x80000000

Rcon[8] = 0x1b000000

Rcon[9] = 0x36000000

另外,在密钥膨胀中包括其他两个操作RotWord和SubWord,下面对这两个操作做说明:

RotWord( B0,B1,B2,B3 )对4个字节B0,B1,B2,B3进行循环移位,即

RotWord( B0,B1,B2,B3 ) = ( B1,B2,B3,B0 )

SubWord( B0,B1,B2,B3 )对4个字节B0,B1,B2,B3使用aes的S盒,即

SubWord( B0,B1,B2,B3 ) = ( B’0,B’1,B’2,B’3 )

其中,B’i = SubBytes(Bi),i = 0,1,2,3。

密钥膨胀的算法如下:

八.解密过程

aes的加密和解密过程并不相同,首先密文按128位分组,分组方法和加密时的分组方法相同,然后进行轮变换。

aes的解密过程可以看成是加密过程的逆过程,它也由10轮循环组成,每一轮循环包括四个变换分别为InvShiftRows变换、InvSubBytes变换、InvMixColumns变换和AddRoundKey变换;

这个过程可以描述为如下代码片段所示:

九.InvShiftRows变换

InvShiftRows变换是ShiftRows变换的逆过程,十分简单,指定InvShiftRows的变换如下。

Sr,(c+shift(r,Nb))modNb= Sr,c for 0 r 4 and 0 ≤ c Nb

图2-2-6演示了这个过程。

图2-2-6 aes算法InvShiftRows变换

十.InvSubBytes变换

InvSubBytes变换是SubBytes变换的逆变换,利用aes的S盒的逆作字节置换,表2-2-2为InvSubBytes变换的置换表。

表2-2-2 InvSubBytes置换表

十一.InvMixColumns变换

InvMixColumns变换与MixColumns变换类似,每列乘以d(x)

d(x) = (OB)x3 + (0D)x2 + (0G)x + (0E)

下列等式成立:

( (03)x3 + (01)x2 + (01)x + (02) )⊙d(x) = (01)

上面的内容可以描述为以下的矩阵乘法:

十二.AddRoundKey变换

aes解密过程的AddRoundKey变换与加密过程中的AddRoundKey变换一样,都是按位与子密钥做异或操作。解密过程的密钥膨胀算法也与加密的密钥膨胀算法相同。最后状态矩阵中的数据就是明文。

分组加密算法

基于SOC的FPSLIC硬件实现分组加密算法

1 引言:

美国Atmel公司生产的AT94K系列芯片是以Atmel 0.35 的5层金属CMOS工艺制造。它基于SRAM的FPGA、高性能准外设的Atmel 8位RISC AVR单片机。另外器件中还包括扩展数据和程序SRAM及器件控制和管理逻辑。图1-1是Atmel公司的FPSLIC内部结构图。

图1-1 FPSLIC内部结构图

AT94K内嵌AVR内核,Atmel公司的FPSLIC可编程SOC内嵌高性能和低功耗的8位AVR单片机,最多还带有36KB的SRAM,2个UART、1个双线串行接口,3个定时/计数器、1个8 8乘法器以及一个实时时钟。通过采用单周期指令,运算速度高达1MPS/MHz,这样用户可以充分优化系统功耗和处理速度。AVR内核基于增强型RISC结构,拥有丰富的指令系统以及32个通用工作寄存器。而且所有通用寄存器都与算术逻辑单元ALU相连;另外,在一个时钟周期内,执行单条指令时允许存取2个独立的寄存器,这种结构使得代码效率更高,并且在相同的时钟频率下,可以获得比传统的CISC微处理器高10倍的数据吞吐量。AVR从片内SRAM执行程序,由于AVR运行代码存储在SRAM中,因此它可以提供比较大的吞吐量,这样可以使其工作在突发模式上。在这种模式上,AVR大多时间都是处于低功耗待机状态,并能在很短的时间里进行高性能的处理。微处理器在突发模式运行模式下的平均功耗要比长时间低频率运行时的功耗低得多。FPSLIC的待机电流小于100 ,典型的工作电流为2-3mA/MHz。在系统上电时,FPGA配置SRAM和AVR程序SRAM都能自动地通过Atmel在系统可编程串行存贮器AT17来装载。

2 FPSLIC硬件的设计实现:

2.1 硬件实现框图

图2-1系统硬件实现框图

图2-1是为了实现加密算法的硬件框图。计算机通过它的串口和FPSLIC的通信端口UART0相连,用来进行数据的传送和接收。FPSLIC通过AVR的通信端口等待接收主机传来的信息,通过内部的下载程序将数据进行处理,最后再传回到主机上。图2-1中FPGA是一个计数器,此计数器一上电就从0计数,并用进位输出信号产生一个AVR中断,即进位输出信号RCO连接到AVR的中断信号INTA0。当AVR接收到由计数器的进位信号产生的中断时,则执行INTA0的中断服务程序(ISR)。在此期间

,AVR就给INTA0产生的次数计数,并把它放到8位的AVR-FPGA数据总线上,这时就会触发AVR的写使能信号(FPGA的aWE信号端)和FPGA的I/O SELECT0信号(FPGA的LOAD信号端),同时从AVR——FPGA数据总线上将数据载入计数器。数码管的各极连接在实验板上的可编程端口,通过引脚配置用来显示数据。LED指示灯在AVR I/O输出的D口,直接将数据通过命令PORTD来显示。FPGA的时钟通过GCLK5选自AVR单片机的时钟。我们以DES数据加密为例,由仿真试验可以得出DES加密的速率为57.024 kbit/s,它大于串口的最大速率19.2kbit/s,因此可以实时进行数据的加密操作。

一个典型的FPSLIC设计通常应该包括以下几个步骤:

1. 利用联合仿真软件建立一个FPSLIC工程。

2. 预先建立一个AVR软件仿真程序文件。

3. 预先建立一个FPGA的硬件仿真程序文件。

4. 设置和运行AVR-FPGA接口设计。

5. 运行布局前的联合仿真Pre-layout Converification(这一步是可选择的)。

6. 运行Figaro-IDS进行FPGA的布局布线。

7. 运行布局后的联合仿真Pos-layout Converification(这一步是可选择的)。

8. 器件编程数据下载与实验验证。

我们以DES数据加密为例,(新建的工程名为lab1.apj,AVR仿真程序文件为desjiami.asm,FPGA的硬件仿真程序为Count.vhdl)。

2.2 编译AVR的仿真程序软件

(以上程序代码是整个仿真的程序框架,最主要的是对接口进行初始化和对发送和接收部分进行设置,以便进行串口的通信)

2.3器件编程与试验验证

1. 将下载电缆ATDH2225的25针的一端从计算机的并行口接出,令一端10针扁平线插入ATSTK94实验板的J1插头上。下载电缆的标有红色的线和J1插头的第一脚连接。

2. 因为要和计算机串口进行通信,因此要制作一个串口连接电缆,其九针连接电缆的连接关系如下图2-2。电缆一端连接在计算机的任意串口上,另一端连接在实验板上的UART0上。连接电缆只需要连接三根线,UART0的2端连接在FPSLIC的发送端,因此它和计算机的串口2端(接收数据端)相连。UART0的3端连接在FPSLIC的接收端,因此它和计算机的串口2端(发送数据端)相连。

n

bsp; 图2-2 串口通信连接指示图

3. 选择4MHz时钟,即在实验板上将JP17设置在靠近板子内侧位置,而将JP18不连接,也就是将其连接跳线拔掉。

4. 将直流9V电源接头插入ATSTK94实验板的电源插座P3上。

5. 将实验板上的开关SW10调至PROG位置。开关SW10有编程(PROG)和运行(RUN)两种连接。在编程位置,用户可以通过下载电缆和下载程序软件CPS,将System Designer生成的FPSLIC数据流文件给配置存储器编程。在运行位置,FPSLIC器件将载入数据流文件并运行该设计。

6. 打开电源开关SW14,即将它调整到ON位置。这时候实验板上电源发光二极管(红色)发光,表示实验板上已经上电。这样,硬件就连接完毕,等待下一步的数据下载。

7. 单击OK按钮,即生成数据流文件,它将下载到ATSTK94实验板的配置存储器中,这时,Atmel的AT17配置可编程系统(CPS)窗口被打开,如下图2-3,并自动给器件编程。

图2-3 FPSLIC控制寄存器设置对话框

在Procesure下拉列表框中选择/P Partition,Program and Verify from an Atmel File。在Family下拉列表框中选择AT40K/Cypress,在Device下拉列表框中选择AT17LV010(A)(1M)。其余采用系统的默认值。然后点击Start Produce按钮,如果电缆等硬件设置正确,那么程序将下载到实验板上。

8. 将开关SW10调至RUN位置,打开串口调试程序Accesspot129软件。对于Accessport129的设置为:串口为COM1(根据用户选择的计算机端口来设定),波特率:9600,校验位:NONE,数据位为8 ,停止位选择1,串口开关选择开;

3 试验结果:

图3-1中,下面方框中是要输入的64比特的明文,(程序中输入的明文为0123456789ABCDEF),当这64个比特的数据全部输入完毕后,点击发送按钮,在软件上方的数据接收端显示出经过DES算法加密后的密文(85E813540F0AB405)。通过硬件实现的的结果和实际

仿真结果是完全一致的。同时通过数码管也分别显示出最后的加密数据。至此整个硬件试验结束。

图3-1 Accesspot串口调试软件显示的结果图

从上面的串口调试软件可以看出,DES算法的仿真是正确的也是可以在实际中应用的。同理,可以通过以上的方法来实现DES解密和aes等其它的分组加解密。

word文档加密的实验报告

word文档加密,我建议您使用超级加密3000试试。

超级加密3000采用国际上成熟的加密算法和安全快速的加密方法,可以有效保障数据安全!

操作比较简单,您可以到百度上下载一下给您文档加密试试。

产品的开发快则一个月,慢则一年,那么如何杜绝市面上各种山寨也成为了我们必须要关注的问题,加密芯片可以做到这点,在保障开发者权益的同时也保护了消费者权益,KEROS加密芯片作为该领域的领头者,一直在尽力贡献一份力。特点如下:接口:标准I2C协议接口;算法: 标准aes256 / KAS算法;特殊接口:Random Stream Cipher for Interface;工作温度:工业级 -40℃ ~+85℃;频率:400Khz;存储:2K字节EEPROM(可选);电压:1.8V~3.6V;封装:SOT23-6,SOP8,TDFN-6。简单加密算法编程实验的介绍就聊到这里吧,感谢你花时间阅读本站内容,谢谢。

本文标签:简单加密算法编程实验

产品列表
产品封装
友情链接