ciphertext(c语言编写hill密码)
本文目录
c语言编写hill密码
花了些时间写的,希望对你有帮助~#include《stdio.h》#define N 3 //可加密的字符串长度char plaintext=; //明文,输入时输入字符,参与运算时强制转换成整数int ciphertext=; //密文,保存成整数,输出时强制转换成字符int key; //密钥矩阵 void getPlainText() //获得明文字符串{ printf("请输入明文:"); scanf("%s",plaintext); printf("\n");}void getKey() //输入密钥矩阵{ int i,j; printf("请输入加密矩阵:\n"); for(i=0;i《N;i++) for(j=0;j《N;j++) scanf("%d",&key); printf("\n");}void hill() //Hill加密算法{ int i,j; for(i=0;i《N;i++){ //矩阵的乘法 for(j=0;j《N;j++){ //计算转换依据,0~25对应a~z ciphertext-’a’); ciphertext%=26; } } printf("\n");}void printCipherText() //输出加密后的密文{ int i; printf("加密后的密文是:"); for(i=0;i《N;i++) //把参与计算后是整数强制转换成对应的字符 printf("%c",(char)(ciphertext+’a’)); printf("\n");}void main(){ getPlainText(); //明文 getKey(); //密钥 hill(); //加密 printCipherText(); //密文}
请问AES加密能不能不使用扩散器(diffuser),用Ciphertext进行的攻击风险大吗
首先,需要说明的是AES-128是一种确定性的分组加密算法,也就是说,只要密钥和明文是一样的,加密出来的密文就是一样的。所以,在实际使用中,会存在下述的一种风险: 如果明文空间非常小,也就是说需要加密的明文只有几种,那么就很容易通过密文(Ciphertext)猜到明文。比如,需要加密的明文是一个布尔值,不是真就是假,只有两种情况,那么如果密钥不变的话,加密出来的密文也就只有两种,因此根本不需要知道密钥,只要多次截获密文进行分析,就能知道明文到底是什么。 因此,引入扩散器的目的就是增大明文空间,也就是增加一定的随机性。这样,即便明文本身只有两种可能,通过扩散,也会出现更多的情况,这样就不能通过密文直接猜明文了。 所以,如果你要加密的数据是有一定格式,并且数据量很小,或内容变化不大的话,最好使用扩散器。否则存在上述的风险。但是如果要加密大文件等,就没有必要了。 最后再提一点,AES-128最好使用CBC模式,它比直接用EBC模式好很多。
ciphertext是什么意思
ciphertextn.密码,暗记文; 密文; 例:The research and implementation of chosen ciphertext attacks.选择密文攻击法之研究与实作。
更多文章:
office2007 sp2(Microsoft Office 2007 SP2是什么意思)
2024年7月21日 18:09
课程表模板免费下载(求初中课程表模板(框框)最好空白,,用手机可以直接复制的那种)
2024年6月20日 05:55
老款经典街机游戏下载(求一款经典街机游戏的名称和下载地址!!!!)
2024年8月14日 02:15
星之卡比重返梦幻岛(星之卡比重返梦幻岛通了一遍以后,第二个红的解开,怎么还是用卡比,并且还是和第一遍一模一样,)
2024年3月26日 12:05
驱动精灵万能网卡驱动版安装包(驱动精灵万能网卡版怎么安装驱动)
2024年7月3日 16:14
淘宝特价版免费下载(下载淘特app,淘特app新用户帮忙 要新用户成功帮忙赞哦)
2024年9月26日 18:35
为什么用晨风修改器修改不了QQ分组颜色啊?怎么用晨风透明皮肤修改器把分组右移啊求解
2024年6月8日 04:03
window10文件资源管理器左侧栏消失,怎么显示出来?电脑文件管理器如何管理文件夹
2023年10月5日 01:40