使用c++语言实现RSA算法,对一字符串加密解密分组编码问题

awwwwab 2014-11-01 03:55:32
RSA算法中,需要高效实现加密,将输入的字符串进行编码,需要4位一次的加密,提高运算效率,力求如何分组编码!!
...全文
354 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
awwwwab 2014-11-01
  • 打赏
  • 举报
回复
unsigned int BASE=128;//以128为基进行编码 unsigned int panding(char *s,unsigned int ba){ int len=strlen(s); if(len%ba!=0) len+=ba-len%ba; printf("len=%d",len); return len; } unsigned int encode(char *s,unsigned int ba){ printf("the encode is begin\n"); //printf("the s is %s\n",s); unsigned int ans=0; for( int i=0;i<ba;++i){ ans=ans*BASE+(unsigned int)s[i]; printf("i=%d,si=%d\n",i,s[i]); } printf("encode is end --ans=%d\n",ans); return ans; } char temp[4]; void decode(unsigned int a,unsigned int ba){ printf("the decode is begin\n"); printf("the a is %d\n",a); for( int i=ba-1;i>=0;--i){ temp[i]=a%BASE; a/=BASE; } for( int i=ba-1;i>=0;--i){ printf("%c",temp[i]); printf("\n decode is end \n"); } } char plain[1000],cipher[1000]; void gao(char *plain,char *cipher,unsigned int c,unsigned int ba){ int len=panding(plain,ba),j=0; for( int i=0;i<len/ba;++i){ unsigned int a=encode(plain+ba*i,ba),b; b=abmodc(a,c,N); memset(temp,0,sizeof(temp)); decode(b,ba); for(unsigned int j=0;j<ba;++j){ cipher[ba*i+j]=temp[j]; } } printf("the cipher is %s",cipher); } void encrypt(){ gao(plain,cipher,E,4); } void decrypt(){ gao(cipher,plain,D,4); } 测试结果:输入数字能成功加解密,输入为部分字符时不能成功,求哪里出现了内存越界溢出啊!!

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧