McRypt Linux如何使用rijndael 256 cbc
mcrypt linux how to use rijndael 256 cbc
我在linux/ubuntu上工作。我发现mcrypt作为一个库自动包含在这个平台中。我想创建一个加密aes 256和cbc填充7 (iv)。有人能给我一个例子,如何加密aes 256和cbc iv,填充7字符串?
Rijndael与aes相同。
这是我找到的链接与库我想使用:http://linux.die.net/man/3/mcrypt
您是在问如何使用mcrypt
吗?下面是一个基本的框架:
#include <mcrypt.h>
int main()
{
char algo[] = "rijndael-256";
char mode[] = "cbc";
char key[] = ...
char iv[] = ...
MCRYPT td = mcrypt_module_open(algo, NULL, mode, NULL);
if (td == MCRYPT_FAILED) { /* error */ }
int r = mcrypt_generic_init(td, key, keysize, iv);
/* use mdecrypt_generic() or mcrypt_generic() */
mcrypt_generic_deinit(td);
mcrypt_module_close(td);
}
您必须与mcrypt_enc_get_key_size(td)
和mcrypt_enc_get_iv_size(td)
核对实际密钥大小和IV大小,并提供合适的密钥和IV数据。
编辑:因为它很简单,这里有一个算法来添加和删除PCKS7填充:
std::string add_pkcs7_padding(std::string s, std::size_t n)
{
const std::size_t fill = n - (s.length() % n);
s.append(fill, static_cast<char>(fill));
return s;
}
std::string strip_pkcs7_padding(std::string s, std::size_t n)
{
const std::size_t pad = static_cast<unsigned char>(*s.rbegin());
return s.substr(0, s.length() - pad);
}
(库级代码当然会测试n
可以用char
表示,并且在剥离输入字符串期间非空并且填充有效。)
相关文章:
- 如何通过命令行工具在 COIN-OR Cbc 中设置超时?
- aes cbc反向加密
- QT:AES-256-CBC 根据 PHP 代码在C++中加密/解密
- 牡丹AES CBC PKCS7加密解密
- AES 256-cbc 加密C++使用 OpenSSL
- 使用 AES-256 CBC 加密文本文件
- AES CBC 128 bit encryption -OpenSSL
- 使用公钥 X509 V3 (PKCS7) 使用 AES 128 模式 cbc 加密文件
- 硬币或CBC求解器性能:命令行实用程序与编译的C 程序
- AES-128 CBC 模式下加密流末尾的加密 ++ 额外块
- OPENSSL Blowfish CBC加密与PHP不同,C++
- 在窗口中将 AES CBC 与 NCrypt 一起使用
- 如何通过AES-256-CBC使用密码代替密钥和IV加密文件
- 如何将C++ Rijndael 加密转换为 C#,当出现错误说"Padding is invalid and cannot be removed"?
- 在Android NDK中使用C / C++加密(Rijndael Cipher)
- 如何使用加密API进行AES CBC加密
- AES CBC 加密/解密仅解密前 16 个字节
- 是否有可能从AES-CBC的cphertext中找出原始数据的长度
- 在mbed微控制器(c++)上加密AES128-CBC,并在nodejs中解密AES128-CBC
- McRypt Linux如何使用rijndael 256 cbc