加密和解密字符串的功能

时间:2015-07-25 11:13:00

标签: c# encryption

我正在寻找两个功能:Decryptstring(string crypted)Encryptstring(string uncrypted)

这些加密应该由我制作的密钥

组成
78998481sad7q431151

使用该密钥,我将始终能够加密和解密字符串......

亲切的问候

2 个答案:

答案 0 :(得分:1)

这不是一个答案,这是一些让你的问题更好的建议。

  • 您希望加密有多强大?这只是为了阻止你的小妹妹读书,还是保护商业敏感数据免受黑客攻击?

  • 您想要什么输出?你想要一个字符串,一个可打印的文本字符串或一个字节数组?输出可以比输入长还是限制为相同的大小?

  • 您多久更换一次钥匙?您是否需要强大的KDF(密钥衍生功能)或更简单但更不安全的东西是否足够?

通过在问题中加入更多详细信息,您将获得更具体的答案,这些答案可能对您有用。

答案 1 :(得分:0)

    public string Encrypt(string plainMessage, string password)
    {
        TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
        des.IV = new byte[8];
        PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, new byte[0]);
        des.Key = pdb.CryptDeriveKey("RC2", "MD5", 128, new byte[8]);
        MemoryStream ms = new MemoryStream(plainMessage.Length * 2);
        CryptoStream encStream = new CryptoStream(ms, des.CreateEncryptor(),
            CryptoStreamMode.Write);
        byte[] plainBytes = Encoding.UTF8.GetBytes(plainMessage);
        encStream.Write(plainBytes, 0, plainBytes.Length);
        encStream.FlushFinalBlock();
        byte[] encryptedBytes = new byte[ms.Length];
        ms.Position = 0;
        ms.Read(encryptedBytes, 0, (int)ms.Length);
        encStream.Close();
        return Convert.ToBase64String(encryptedBytes);
    }


    public string DecryptMessage(string encryptedBase64, string password)
    {
        TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
        des.IV = new byte[8];
        PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, new byte[0]);
        des.Key = pdb.CryptDeriveKey("RC2", "MD5", 128, new byte[8]);
        byte[] encryptedBytes = Convert.FromBase64String(encryptedBase64);
        MemoryStream ms = new MemoryStream(encryptedBase64.Length);
        CryptoStream decStream = new CryptoStream(ms, des.CreateDecryptor(),
            CryptoStreamMode.Write);
        decStream.Write(encryptedBytes, 0, encryptedBytes.Length);
        decStream.FlushFinalBlock();
        byte[] plainBytes = new byte[ms.Length];
        ms.Position = 0;
        ms.Read(plainBytes, 0, (int)ms.Length);
        decStream.Close();
        return Encoding.UTF8.GetString(plainBytes);
    }