首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails OpenSSL::密码是用于AES-CBC-256的哪种填充?

Rails OpenSSL::密码是用于AES-CBC-256的哪种填充?
EN

Stack Overflow用户
提问于 2013-07-25 23:31:46
回答 3查看 2.7K关注 0票数 3

当填充块用于加密时,OpenSSL::密码使用什么填充方案?文件含糊不清。

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/openssl/rdoc/OpenSSL/Cipher.html#method-i-padding-3D

我需要使用不同语言的加密数据。我知道有很多种填充材料:

operation#Padding

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-25 23:50:52

你的第一个链接建议

有关进一步信息,请参见EVP_CIPHER_CTX_set_padding。

此页表示(强调地雷):

如果启用了填充(默认),那么EVP_EncryptFinal_ex()将加密最终‘’数据,即保留在部分块中的任何数据。使用标准块填充(也称为PKCS填充),将加密的最终数据写入out,其中应该有足够的空间容纳一个密码块。写入的字节数放在outl中。调用此函数后,加密操作将完成,不应进一步调用EVP_EncryptUpdate()。

该页面还包含一个指向您可能认为有帮助的其他信息的链接。

票数 4
EN

Stack Overflow用户

发布于 2013-07-26 00:13:43

PKCS#7/PKSC#5在CBC模式中非常常见。PKCS#5PKCS#7相同,但PKCS#5仅指64位(8字节)块大小,因此对于AES-256是PKCS#7

来自en.wikipedia.org/wiki/Padding_(cryptography)#PKCS7

代码语言:javascript
复制
01
02 02
03 03 03
04 04 04 04
05 05 05 05 05
etc.

如果您的msg大小为16的倍数(AES中的块大小),则会再添加一个由16倍字节填充的块。

票数 3
EN

Stack Overflow用户

发布于 2013-07-26 13:43:23

您可以通过解密方法中的NoPadding设置的消息解密来确认正在使用的填充。它将通过任何填充,就好像它是实际消息的一部分一样。查看消息中最后一个块的字节值。这将告诉您发送方正在使用何种类型的填充。然后将您的解密函数设置为期望这种填充类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17870502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档