2009-03-13 3 views
0

AES暗号化に使用できる単純なASP.NET(.VB)はありますか?AS3CRYPTOを復号化したAESソースコード(VB.NET)があります。メッセージを暗号化しました

ここにはc#1へのリンクがありますが、複雑なものにはかなりのパラメータ(塩など)があります。 [

私はこのように簡単に呼ばれGOOGLEAS3クラスと一緒に動作しますシンプルいずれかが必要です

var key:ByteArray = Hex.toArray("1234567890abcdef"); 
var pt:ByteArray = Hex.toArray(Hex.fromString("aaaaaaaaaaaaaaaaaaaa")); 
var aes:AESKey = new AESKey(key); 
aes.encrypt(pt); 
var out:String = Hex.fromArray(pt).toUpperCase(); 

答えて

0

をAESは、System.Security.CryptographyでAesクラスとして、フレームワークに組み込まれています。 2つの具体的な実装があります.1つは管理され、もう1つはWindows Crypto Service Providerを使用します(より高速ですが他のプラットフォームには移植できません)。 Rijndaelの実装もあり、そこからAESが導出されます。

ブロック暗号であるため、初期化ベクトルと暗号化/復号化の鍵が必要です。 1つを設定せずに暗号化すると、ランダムなものが使用されますが、復号化のためにそれを保存して取得する必要があります。

コード例:(私の近刊GRINの6章から持ち上げ)

static byte[] Encrypt(byte[] clearText, byte[] key, byte[] iv) 
{ 
    // Create an instance of our encyrption algorithm. 
    RijndaelManaged rijndael = new RijndaelManaged(); 

    // Create an encryptor using our key and IV 
    ICryptoTransform transform = rijndael.CreateEncryptor(key, iv); 

    // Create the streams for input and output 
    MemoryStream outputStream = new MemoryStream(); 
    CryptoStream inputStream = new CryptoStream(
     outputStream, 
     transform, 
     CryptoStreamMode.Write); 

    // Feed our data into the crypto stream. 
    inputStream.Write(clearText, 0, clearText.Length); 

    // Flush the crypto stream. 
    inputStream.FlushFinalBlock(); 

    // And finally return our encrypted data. 
    return outputStream.ToArray(); 
} 

とAESクラスのいずれかと、適切なとRijndaelManagedクラスを置き換える

static byte[] Decyrpt(byte[] clearText, byte[] key, byte[] iv) 
{ 
    // Create an instance of our encryption algorithm. 
    RijndaelManaged rijndael = new RijndaelManaged(); 

    // Create an decryptor using our key and IV 
    ICryptoTransform transform = rijndael.CreateDecryptor(key, iv); 

    // Create the streams for input and output 
    MemoryStream outputStream = new MemoryStream(); 
    CryptoStream inputStream = new CryptoStream(
     outputStream, 
     transform, 
     CryptoStreamMode.Write); 

    // Feed our data into the crypto stream. 
    inputStream.Write(clearText, 0, clearText.Length); 

    // Flush the crypto stream. 
    inputStream.FlushFinalBlock(); 

    // And finally return our decrypted data. 
    return outputStream.ToArray(); 
} 

を復号化しますキー。

+0

私はこれをやろうとしていますが、キーサイズ違反が続いています。ここに私のキーです: string verySecureKey = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"; 私が行うこと: var algo = new System.Security.Cryptography.RijndaelManaged(); keyArray = UTF8Encoding.UTF8.GetBytes(verySecureKey); algo.Key = keyArray; 最後の行(32ではなく64ビット)でキー違反が発生しますが、これはAS3Cryptoで正常に動作します。思考? – aronchick

関連する問題