3131|4

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求RC4算法的汇编代码,基于CE5.0平台 [复制链接]

那位高人能帮忙写写呀,多谢了。
邮箱:victor_20082003@163.com

最新回复

从网上找了段汇编码,请问这是ARM的吗?这么嵌入VS2005使用? comment  * rc4_setkey proto :DWORD, :DWORD rc4_crypt proto :DWORD, :DWORD .data? rc4keytable db 256 dup(?) .code rc4_setkey proc ptrInkey:DWORD, ptrInkey_length:DWORD   xor ebx,ebx   @_r1:   mov [rc4keytable+ebx],bl   inc ebx   cmp ebx,256   jnz @_r1      mov esi,ptrInkey   xor eax,eax   xor ebx,ebx     xor ecx,ecx     xor edi,edi   @_r3:   mov al,[rc4keytable+ecx]   add bl,byte ptr [esi+edi]   add bl,al     mov dl,[rc4keytable+ebx]   mov [rc4keytable+ecx],dl   mov [rc4keytable+ebx],al   inc edi   cmp edi,ptrInkey_length   jl @_r2   xor edi,edi @_r2:   inc ecx   cmp ecx,256   jnz @_r3   ret    rc4_setkey endp rc4_crypt proc ptrIndata:DWORD, ptrIndata_length:DWORD   xor eax,eax   xor ebx,ebx   xor edi,edi   xor edx,edx   mov esi,ptrIndata @_r1:   mov cl,[rc4keytable+1+eax]   add dl,cl   mov bl,[rc4keytable+edx]   mov [rc4keytable+edx],cl   add bl,cl   mov bl,[rc4keytable+ebx]   xor [esi+edi],bl   inc eax   inc edi   cmp ptrIndata_length,edi   jnz @_r1   ret    rc4_crypt endp   详情 回复 发表于 2008-3-11 13:52
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
假设S-box长度和密钥长度均为为n。先来看看算法的初始化部分(用类C伪代码表示):
for (i=0; i s=i;
j=0;
for (i=0; i {
j=(j+s+k)%256;
swap(s, s[j]);
}
 
 

回复

48

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在初始化的过程中,密钥的主要功能是将S-box搅乱,i确保S-box的每个元素都得到处理,j保证S-box的搅乱是随机的。而不同的S-box在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,并且,该序列是随机的:
i=j=0;
while (明文未结束)
{
++i%=n;
j=(j+s)%n;
swap(s, s[j]);
sub_k=s((s+s[j])%n);
}
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
我要ARM的汇编码哦
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
从网上找了段汇编码,请问这是ARM的吗?这么嵌入VS2005使用?
comment  *

rc4_setkey proto :DWORD, :DWORD
rc4_crypt proto :DWORD, :DWORD

.data?

rc4keytable db 256 dup(?)

.code

rc4_setkey proc ptrInkey:DWORD, ptrInkey_length:DWORD

  xor ebx,ebx  
@_r1:
  mov [rc4keytable+ebx],bl
  inc ebx
  cmp ebx,256
  jnz @_r1
  
  mov esi,ptrInkey
  xor eax,eax
  xor ebx,ebx  
  xor ecx,ecx  
  xor edi,edi  
@_r3:
  mov al,[rc4keytable+ecx]
  add bl,byte ptr [esi+edi]
  add bl,al  
  mov dl,[rc4keytable+ebx]
  mov [rc4keytable+ecx],dl
  mov [rc4keytable+ebx],al
  inc edi
  cmp edi,ptrInkey_length
  jl @_r2
  xor edi,edi
@_r2:
  inc ecx
  cmp ecx,256
  jnz @_r3
  ret
  
rc4_setkey endp

rc4_crypt proc ptrIndata:DWORD, ptrIndata_length:DWORD

  xor eax,eax
  xor ebx,ebx
  xor edi,edi
  xor edx,edx
  mov esi,ptrIndata
@_r1:
  mov cl,[rc4keytable+1+eax]
  add dl,cl
  mov bl,[rc4keytable+edx]
  mov [rc4keytable+edx],cl
  add bl,cl
  mov bl,[rc4keytable+ebx]
  xor [esi+edi],bl
  inc eax
  inc edi
  cmp ptrIndata_length,edi
  jnz @_r1
  ret
  
rc4_crypt endp

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表