- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我使用 Botan 库进行加密,我的加密代码如下所示。
LibraryInitializer init;
AutoSeeded_RNG rng;
string passphrase="mypassword";
PBKDF* pbkdf = get_pbkdf("PBKDF2(SHA-256)");
SecureVector<byte> salt = rng.random_vec(16);
InitializationVector iv(rng,16);
OctetString aes256_key = pbkdf->derive_key(32, passphrase,&salt[0], salt.size(), 10000 );
cout<<"Encryption key : " << aes256_key.as_string() <<endl ;
ifstream infile ("readme.txt");
ofstream outfile ("encrypt.txt");
Pipe pipe(get_cipher("AES-256/EAX", aes256_key,iv, ENCRYPTION) );
pipe.start_msg();
infile>>pipe;
pipe.end_msg();
SecureVector<byte> cl = pipe.read_all();
outfile.write((const char*)cl.begin(), cl.size());
outfile.flush();
outfile.close();
infile.close();
此代码看起来运行良好并加密了输入文件。我发布此代码以确定加密是否存在错误。 (但我假设加密是正确完成的)
现在尝试用下面的代码解密上面的加密文件。
ifstream infile2 ("encrypt.txt");
ofstream outfile2 ("decrypt.txt");
Pipe pipe2 (get_cipher("AES-256/EAX", aes256_key, iv, DECRYPTION) );
pipe2.start_msg();
infile2 >> pipe2;
pipe2.end_msg();
SecureVector<byte> cl2 = pipe2.read_all();
outfile2.write((const char*)cl2.begin(), cl2.size());
outfile2.close();
infile2.close();
}
与上面生成的解密 key 相同,InitializationVector iv
用于解密。
解密抛出异常AES-256/EAX : message authentication failed
我在这里做错了什么以及如何正确解密上面的 encryptrd 文件。
最佳答案
问题是 ifstream
和 ofstream
假定字符输出。如果您将其配置为使用 std::ios::binary
作为第二个参数来处理二进制文件,那么您的代码应该没问题。这也被 Botan API 引用使用,如果它也没有明确编码密文。
关于c++ - 解密 AES-256 加密文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128055/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!