delphi aes cbc pkcs5加密(AES共有ECB,CBC,CFB,OFB,CTR五种模式分别有什么区别)

本文目录
AES共有ECB,CBC,CFB,OFB,CTR五种模式分别有什么区别
转:
JCE中AES支持五中模式:CBC,CFB,ECB,OFB,PCBC;支持三种填充:NoPadding,PKCS5Padding,ISO10126Padding。不支持SSL3Padding。不支持“NONE”模式。
其中AES/ECB/NoPadding和我现在使用的AESUtil得出的结果相同(在16的整数倍情况下)。
不带模式和填充来获取AES算法的时候,其默认使用ECB/PKCS5Padding。
算法/模式/填充
16字节加密后数据长度 不满16字节加密后长度
AES/CBC/NoPadding
16
不支持
AES/CBC/PKCS5Padding
32
16
AES/CBC/ISO10126Padding
32
16
AES/CFB/NoPadding
16
原始数据长度
AES/CFB/PKCS5Padding
32
16
AES/CFB/ISO10126Padding
32
16
AES/ECB/NoPadding
16
不支持
AES/ECB/PKCS5Padding
32
16
AES/ECB/ISO10126Padding
32
16
AES/OFB/NoPadding
16
原始数据长度
AES/OFB/PKCS5Padding
32
16
AES/OFB/ISO10126Padding
32
16
AES/PCBC/NoPadding
16
不支持
AES/PCBC/PKCS5Padding
32
16
AES/PCBC/ISO10126Padding
32
16
可以看到,在原始数据长度为16的整数倍时,假如原始数据长度等于16*n,则使用NoPadding时加密后数据长度等于16*n,其它情况下加密数据长度等于16*(n+1)。在不足16的整数倍的情况下,假如原始数据长度等于16*n+m,除了NoPadding填充之外的任何方式,加密数据长度都等于16*(n+1);NoPadding填充情况下,CBC、ECB和PCBC三种模式是不支持的,CFB、OFB两种模式下则加密数据长度等于原始数据长度。
JAVA使用AES/CBC/PKCS5方式加密的内容,怎样在C#下解密
JAVA使用AES/CBC/PKCS5方式加密的内容,怎样在C#下解密
java和C#只是语言,AES这些是演算法,所以和语言没太大关系,JAVA加密的“1”和c#加密的“1”结果是一样的,解密出来也是一样的。 / 《summary》 / AES解密 / 《/summary》 / 《param name=cipherText》密文字串《/param》 / 《returns》返回明文字串《/returns》 public static string AESDecrypt(string showText) { byte; using (MemoryStream ms = new MemoryStream(cipherText)) { using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Read)) { cs.Read(decryptBytes, 0, decryptBytes.Length); cs.Close(); ms.Close(); } } return Encoding.UTF8.GetString(decryptBytes).Replace("\0", ""); /将字串后尾的’\0’去掉 }} 上文为使用c#进行AES解密,其他的可以自行百度。
Java和js使用AES/CBC/PKCS5Padding(或者7)得到相同的密文
首先准备一份明文和秘钥:
var plaintText = ’aaaaaaaaaaaaaaaa’; 明文
var keyStr = ’bbbbbbbbbbbbbbbb’; 一般key为一个字串
参看官网文件,AES方法是支援AES-128、AES-192和AES-256的,加密过程中使用哪种加密方式取决于传入key的型别,否则就会按照AES-256的方式加密。
CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.
由于Java就是按照128bit给的,但是由于是一个字串,需要先在前端将其转为128bit的才行。
AES/CBC/PKCS5Padding iOS怎么做
PKCS7Padding跟PKCS5Padding的区别就在于资料填充方式,PKCS7Padding是缺几个位元组就补几个位元组的0,而PKCS5Padding是缺几个位元组就补充几个位元组的几,好比缺6个位元组,就补充6个位元组的6
易语言怎么写AES/CBC/PKCS7的加解密
我有现成AES的程式,是从OPENSSL的程式码里面抽取出来的。你可以看看,演算法什么都是有c语言原始码的。那个cbc的模式跟CFB《/dd》 《dd data-dl=’’ data-url="zhidao.baidu/question/136221050968132365" data-si="1"》《a href="#" 》《i 》《/a》

更多文章:
export用法搭配(export后用介词in还是from)
2026年2月27日 23:30
i wrote python(python零基础自学的基本知识)
2025年10月1日 20:00
java框架实现日志管理的原理步骤(java中如何使用log4j将记录的操作日志信息)
2025年9月7日 10:15
int是什么意思啊音响上(汽车CD机上的英文字母各是什么意思)
2026年9月13日 08:45
completed是什么意思中文(level completed什么意思)
2026年1月3日 20:15
python读取文件相对路径(python中的绝对路径和相对路径均如何理解呢)
2025年10月1日 15:45
郑州cms建站系统(国内的JAVA版CMS系统哪些比较给力)
2025年9月10日 06:45
正则表达式过滤1234(如何用正则表达式过滤除数字以外的其他字符)
2026年2月16日 12:30
用python画简单的花(pythoncircle函数画花瓣怎么计算角度)
2026年9月25日 13:15
phpstorm如何配置服务器(phpstorm 怎么设置http代理服务器)
2026年1月27日 20:00
sql ser数据库安装路径(我的SQL server 2000安装在c盘下,那么以后保存的数据库都是默认存在c盘下了,)
2025年11月2日 04:45








![grep使用正则表达式(正则表达式:grep “^[[:space :]]*$” 表示什么)](/static/images/nopic/30.jpg)



