0

クエリ文字列で使用するデータを暗号化/復号化しようとしています。

ほとんどの場合、暗号化されたデータは「等号」記号「=」で終わります。

以下は、暗号化された文字列の例です。

 1 - LS07D43u6Hs= 
 2 - oHPgq6hz0A0=  
 3 - 4ugeuARQvXw=   
 abc - gZfrQVAk9Ic=  
 encode me - RfSQYXX1P4MU7LhMsfsG8w==

ここからコードをコピーして、少し変更しました。

http://www.deltasblog.co.uk/code-snippets/basic-encryptiondecryption-c/

        byte[] inputArray = UTF8Encoding.UTF8.GetBytes("encode me");
        TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
        tripleDES.Key = UTF8Encoding.UTF8.GetBytes("abcd123456Idlaaz");
        tripleDES.Mode = CipherMode.ECB;
        tripleDES.Padding = PaddingMode.PKCS7;
        ICryptoTransform cTransform = tripleDES.CreateEncryptor();
        byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
        tripleDES.Clear();


        Response.Write(Convert.ToBase64String(resultArray, 0, resultArray.Length)); 

Key、PaddingMode、CipherMode を変更しようとしましたが、うまくいきませんでした。最後に常に = を返します。私を助けてください。

4

1 に答える 1

3

最後の等号は、暗号化アルゴリズムによって生成されません。
Base 64 でエンコードされた文字列を作成するときにパディングする標準的な手順です。詳細については、base64 でエンコードされた文字列の末尾に = 記号があるのはなぜですか

また、この終了メカニズムは、ここで非常にうまく説明されていますhttp://en.wikipedia.org/wiki/Base64

于 2013-10-30T09:32:29.553 に答える