【问题标题】:how to decrypt a string in c#如何在c#中解密一个字符串
【发布时间】:2011-11-27 14:32:47
【问题描述】:

我知道如何加密测试,但我不知道如何解密。

谁能告诉我我该怎么做。

我用来加密字符串的代码是

string encoded = Convert.ToBase64String(Encoding.Unicode.GetBytes("USERNAME"));
string decript = Convert.ToString(encoded);
Decrypt(encoded);

我不知道怎么解密。

【问题讨论】:

  • 学究:这不是加密和解密,这是编码和解码。
  • 您的示例中没有加密,只有编码。
  • 推论是,如果您依靠 base64 编码来保护用户名的秘密,那么您的整个方法都是错误的。
  • Convert.ToString(encoded) 是一个空操作,因为encoded 已经是一个字符串。
  • 对不起,这是我的错误,我深表歉意。

标签: c# winforms base64


【解决方案1】:

首先,您不是在加密,而是在编码。加密通常使用密钥(或公钥/私钥对),以便只有持有密钥的人才能解密加密的消息。如果您知道所使用的算法,则编码是可逆的。编码不应用作加密的替代品;它不安全。

其次,您只需使用用于进行编码的 Convert 方法的双胞胎来反转该过程。

 string decoded = Encoding.Unicode.GetString( Convert.FromBase64String( encoded ) );

【讨论】:

    【解决方案2】:

    Base64 不是“加密”——它只是将任意二进制数据表示为完全 ASCII 字符串的一种方式。

    Convert.ToBase64String 的反面就是Convert.FromBase64String,但重要的是您要了解这不是一种加密技术。 (同样值得思考为什么你有那个中间线 - 当它传递一个字符串时你期望Convert.ToString 做什么?)

    【讨论】:

      【解决方案3】:

      【讨论】:

      • -1:snark 有时间和地点,但不是“全部答案”
      • @Inerdial OP 的问题跟踪记录应该几乎证明不是这样,但好的,已编辑。
      【解决方案4】:

      此代码用于向/从 Base64 编码/解码字符串:

      string inputText = "This is some text.";
      byte [] bytesToEncode = Encoding.Unicode.GetBytes (inputText);
      
      string encodedText = Convert.ToBase64String (bytesToEncode);
      
      byte [] decodedBytes = Convert.FromBase64String (encodedText);
      string decodedText = Encoding.Unicode.GetString (decodedBytes);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-07
        • 2021-10-10
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        相关资源
        最近更新 更多