c# - 在 C# 中使用 openssl
问题描述
我正在尝试完成这个挑战:https ://cryptopals.com/sets/1/challenges/7 ,我在使用此处的 openssl.net 库时遇到了一些问题:http: //openssl-net.sourceforge.net /
我查看了标准 OpenSSL 文档和可用于 openssl.net 库的一些文档,但我无法弄清楚如何使用挑战中描述的 Openssl 密码功能(“最简单的方法:使用 OpenSSL: :Cipher 并给它 AES-128-ECB 作为密码。")
有谁知道一个类似的库,其中包含更多我可以使用的文档,或者有人可以给我一个 OpenSSL::Cipher 加密或解密函数的例子来帮助我入门吗?
解决方案
对于这个简单的问题,您真的不需要 OpenSsl。.NET 库绰绰有余:
using (var aes = new AesManaged())
{
byte[] key = Encoding.ASCII.GetBytes("YELLOW SUBMARINE");
aes.Key = key;
aes.Mode = CipherMode.ECB;
string b64 = File.ReadAllText("7.txt");
byte[] bytes = Convert.FromBase64String(b64);
using (var decryptor = aes.CreateDecryptor())
{
byte[] result = decryptor.TransformFinalBlock(bytes, 0, bytes.Length);
string text = Encoding.ASCII.GetString(result);
}
}
请注意,通常我尽量不使用Encoding.ASCII
(而且我更喜欢使用Encoding.UTF8
),因为在这个世界上很少有东西是真正的 ASCII ......但这个问题似乎是其中之一:-)
推荐阅读
- python - 对于列表理解,Dask 延迟初始化非常慢
- language-agnostic - 将“每个周期发生的概率 X”转换为“F(random, X) 秒内的下一次发生”
- c# - Accord.net 模板匹配[]
- javascript - Javascript正则表达式仅在匹配项之外替换
- sugarcrm - 使用逻辑挂钩将潜在客户转换为联系人
- yii2 - Yii2 - 下拉列表 OnChange 以显示其他模型属性
- machine-learning - 在 DictVectorizer 和 fit_transform 之后自动填充测试数据
- r - ggplot在barplot中更改堆栈顺序
- python - 无法使用 Django 2.1 和 Python 3.5 创建自定义用户模型
- r - 如何在 Windows 中调试(逐行)Rcpp 生成的代码?