代码之家  ›  专栏  ›  技术社区  ›  John

将openssl与c结合使用#

  •  0
  • John  · 技术社区  · 6 年前

    我正在尝试进行以下挑战: 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 encrypt或decrypt函数的例子来帮助我开始?

    1 回复  |  直到 6 年前
        1
  •  3
  •   xanatos    6 年前

    这个简单的问题并不需要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…但这个问题似乎是其中之一:-)