public static string EncryptRJ256(string prm_text_to_encrypt) { RijndaelManaged rijndaelManaged = new RijndaelManaged(); rijndaelManaged.Padding = PaddingMode.Zeros; rijndaelManaged.Mode = CipherMode.CBC; rijndaelManaged.KeySize = 256; rijndaelManaged.BlockSize = 256; byte[] array = new byte[0]; byte[] rgbIV = new byte[0]; string s = Cryptographer.GenerateKeyString(); string s2 = Cryptographer.RJ256Key; array = Encoding.UTF8.GetBytes(s); rgbIV = Encoding.UTF8.GetBytes(s2); ICryptoTransform transform = rijndaelManaged.CreateEncryptor(array, rgbIV); MemoryStream memoryStream = new MemoryStream(); CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write); byte[] bytes = Encoding.UTF8.GetBytes(prm_text_to_encrypt); cryptoStream.Write(bytes, 0, bytes.Length); cryptoStream.FlushFinalBlock(); byte[] array2 = memoryStream.ToArray(); byte[] array3 = new byte[array2.Length + array.Length]; Array.Copy(array2, 0, array3, 0, array2.Length); Array.Copy(array, 0, array3, array2.Length, array.Length); return(Convert.ToBase64String(array3)); }
/// <summary> /// 32桁のIV文字列を生成します。 /// </summary> public static string GenerateIVString() { string text = string.Empty; for (int i = 0; i < 32; i++) { text += string.Format("{0}", Cryptographer.random()); } return(text); }