【问题标题】:How to encrypt and decrypt with RC6 using Crypto++如何使用 Crypto++ 使用 RC6 进行加密和解密
【发布时间】:2017-03-27 09:01:58
【问题描述】:

我想用 RC6 加密和解密字符串,但我不明白如何 它适用于 Crypto++ 库,你能给我一个 sn-p 吗?

谢谢!

【问题讨论】:

  • 一些问题。这个问题似乎过于宽泛,缺乏研究,并寻求一般指导。我认为可以通过添加以下信息来改进问题:您查看过哪些 CryptoPP 库的在线文档,到目前为止您编写和尝试了哪些代码以及以何种方式不起作用,包括您看到的错误.另外,您以前使用过其他加密库吗?如果是这样,也许将这种体验与使用 CryptoPP 进行对比,并从其他体验中解释您对 CryptoPP 的任何预期行为。
  • 嗨,搜索了很多,但我找不到代码示例,我阅读了 CryptoPP 文档,但我不明白 RC6 加密和字符串的解密是如何工作的,这就是为什么我来问你一个问题!谢谢
  • RC6 是 AES 候选者之一。它是图书馆提供的众多分组密码之一。为 AES 找到一些 Crypto++ 代码,然后执行 AES → RC6 的复制/粘贴。就此而言,任何分组密码都应该在这种情况下工作,包括 Camellia 和 3DES。我们在 wiki 上添加了一个页面 RC6,但它只是 Camellia 的副本/粘贴。

标签: c++ encryption crypto++ block-cipher


【解决方案1】:

这是code from the Crypto++ website 的 sn-p 演示如何使用库使用 AES 加密字符串(正如 jww 指出的那样,“RC6 是 AES 候选者之一”,并且 sn-p 应该可以用作RC6 的起点):

byte key[AES::DEFAULT_KEYLENGTH], iv[AES::BLOCKSIZE];
string plainText;

// ... populate key, iv, plainText here

string cipher;
StringSink* sink = new StringSink(cipher);
Base64Encoder* base64_enc = new Base64Encoder(sink);
CBC_Mode<AES>::Encryption aes(key, sizeof(key), iv);
StreamTransformationFilter* aes_enc = new StreamTransformationFilter(aes, base64_enc);
StringSource source(plainText, true, aes_enc);

我在 Internet 搜索 Crypto++ 库的示例代码时发现了此信息。诚然,我发现它并不像我预期的那样简单。

StackOverflow 上的相关侧边栏指出了我认为也可以提供帮助的其他页面,例如 Encrypt/Decrypt byte array Crypto++ 的问答。

更新:今天(2017 年 3 月 26 日)刚刚在the RC6 web page at the Crypto++ wiki site 发布了更新。它现在有 RC6 特定代码,看起来正是您需要的。

【讨论】:

  • 那是 AES,不是 RC6。
  • @TheGreatContini 同意。 AES 不完全是 RC6。今天刚刚有人编辑了 crypto++ wiki 网站,并专门为 RC6 添加了代码。我更新了我的答案以指出这一点。
  • @LouisLangholtz - 我们使用 Stack Overflow(和我们的邮件列表)作为反馈循环。如果用户遇到问题,我们要做的第一件事就是快速进行事后分析。我们认为如果一个用户有问题,那么其他用户也会有问题。在这种情况下,促成因素之一是我们缺乏文档。
  • 出于病态的好奇心,请查看一些最重要的 Git 问题。 Git 采用了不同的方法。当他们有趋势时,比如 100,000 个用户一次又一次地遇到同样的麻烦,他们通常什么都不做。这不是一个好的堆栈溢出问题;相反,它是一个未纠正的 Git 进程故障。
猜你喜欢
  • 2018-06-26
  • 2012-04-07
  • 2021-11-04
  • 2020-06-16
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多