首页 > 解决方案 > 在 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 加密或解密函数的例子来帮助我入门吗?

标签: c#windowsopenssl

解决方案


对于这个简单的问题,您真的不需要 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 ......但这个问题似乎是其中之一:-)


推荐阅读