繁体   English   中英

如何在C#中使用河豚解密十六进制字符串?

[英]How do I decrypt a hex string using blowfish in C#?

因此,我承担了一项任务,以证明可以解密使用C#使用Blowfish加密的十六进制字节表示的字符串。

这里有:

  • 以十六进制字节表示的加密字符串。
  • 加密密钥作为字符串。

现在也许我有点天真,但是我认为这个过程很简单。

例如,从网上抢走Blowfish实现,然后简单地插入加密密钥和加密文本,它将以可读格式输出字符串。

不幸的是,事实并非如此。 在过去的几个小时中,我尝试了几个不同的库,但是选择了BouncyCastle,因为它似乎最受欢迎。 但是没有太多的文档(这里和其他站点的其他问题中提到),而且我真的不知道如何完成此工作。

这是我所拥有的:

using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Utilities.Encoders;
using Org.BouncyCastle.Crypto;


public class CryptTest
{
    public void Decrypt()
    {           
        var engine = new BlowfishEngine();
        var param = new KeyParameter(System.Text.Encoding.ASCII.GetBytes("sdjerwioukjiefdjewiujewiunjeuwer"));
        var input = Hex.Decode("db247cceae61fddbcbb62d00281e0446");

        BufferedBlockCipher cipher = new BufferedBlockCipher(engine);

        cipher.Init(false, param);

        byte[] outBytes = new byte[input.Length];

        int len1 = cipher.ProcessBytes(input, 0, input.Length, outBytes, 0);

        cipher.DoFinal(outBytes, len1);

        Console.WriteLine(System.Text.Encoding.ASCII.GetString(outBytes));
    }

}

我尝试从BouncyCastle附带的Test类中改编此方法。 谁能指出我想要做的一个好榜样的方向?

我认为至少我遇到的问题之一是密钥-它看起来好像不是十六进制格式,但是我不知道该怎么做。

更新:

我还尝试过与此处不同的库,因为它看起来更接近我想做的事情。

BlowFish b = new BlowFish(System.Text.Encoding.ASCII.GetBytes("sdjerwioukjiefdjewiujewiunjeuwer"));

var result1 = b.Decrypt_CBC("db247cceae61fddbcbb62d00281e0446");
var result2 = b.Decrypt_ECB("db247cceae61fddbcbb62d00281e0446");

Console.WriteLine(result1 + "\n" + result2);

但是我仍然变得乱七八糟。

更新2:

最终暂时有了一些更简单的东西。 Bouncy Castle的(显然)缺乏文档,这使得对加密的经验/知识有限的人士很难正确使用它。 但是,我们将来可能会希望这种情况继续下去,因此,如果有人可以为我指明正确的方向,我仍然很感兴趣。

您将忽略第一个块的解密(来自ProcessBytes() )。

而不是直接使用密码对象,您应该使用 CryptoStream

 
 
 
  
  using (var reader = new StreamReader(new CryptoStream(new MemoryStream(input), cipher, CrytoStreamMode.Read)) Console.WriteLine(reader.ReadToEnd());
 
  

BouncyCastle没有实现ICryptoTransform ,因此您需要自己串联每个调用的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM