-1
A
回答
8
AES是一種對稱加密算法(加密和解密密鑰是一樣的)。如果你正在談論公鑰和私鑰,你需要一個asymmetric encryption algorithm,比如RSA。
0
這裏的字符串數據的使用AES(Rijndael算法)快速加密/解密:
private static readonly byte[] rgbKey = Encoding.UTF8.GetBytes("[email protected]"); // change to your own secure key
private static readonly byte[] rgbIv = Encoding.UTF8.GetBytes("to$eO_e!maI*o3ut"); // change to your own secure initialization vector
public static string Encrypt(string originalString)
{
if (string.IsNullOrEmpty(originalString))
{
throw new ArgumentNullException(
"originalString",
"The string which needs to be encrypted can not be null.");
}
using (var cryptoProvider = new RijndaelManaged())
using (var memoryStream = new MemoryStream())
using (var encryptor = cryptoProvider.CreateEncryptor(rgbKey, rgbIv))
using (var cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
using (var writer = new StreamWriter(cryptoStream))
{
writer.Write(originalString);
writer.Flush();
cryptoStream.FlushFinalBlock();
writer.Flush();
return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
}
}
public static string Decrypt(string encryptedString)
{
if (string.IsNullOrEmpty(encryptedString))
{
throw new ArgumentNullException(
"encryptedString",
"The string which needs to be decrypted can not be null.");
}
using (var cryptoProvider = new RijndaelManaged())
using (var memoryStream = new MemoryStream(Convert.FromBase64String(encryptedString)))
using (var decryptor = cryptoProvider.CreateDecryptor(rgbKey, rgbIv))
using (var cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))
using (var reader = new StreamReader(cryptoStream))
{
return reader.ReadToEnd();
}
}
+0
什麼是默認密碼模式? – 2008-11-05 15:13:35
+0
密碼塊鏈接。據我所知,這是所有SymmetricAlgorithm後代的默認值。 – 2008-11-05 15:39:37
1
您可以加密任何可以被表示爲字節流。從你的問題的「良方」唯一缺少的成分是加密密鑰:
void encrypt(char *plaintext, char *key, char *crypt)
{
// Encrypt plaintext with the key, returning the result in crypt.
}
注:
使用PKI(公鑰/私鑰),每個參與者通常維護自己的私密鑰匙以安全的方式,並免費分配其公衆鑰匙。消息使用公鑰密鑰收件人加密,並由每個收件人用專用密鑰解密。從問題的表述來看,你使用這個模型並不明顯。
傑西爲演示提供了一個很好的例子。只要記住,你可能不希望在生產應用程序硬編碼鍵..
相關問題
- 1. 使用DirectCompute進行AES加密/解密的示例代碼
- 2. AES密碼加密
- 3. AES加密和解密的源代碼
- 4. 使用用戶密碼加密數據的AES加密示例類
- 5. 需要AES解密示例
- 6. 端口AES加密代碼WinRT
- 7. 如何解決AES加密代碼中的例外問題
- 8. 河豚加密示例代碼
- 9. Objective C加密代碼不能像Android AES 256,md5加密
- 10. 使用基於密碼的加密對AES-128 CBC示例的回顧
- 11. AES加密 - 在Android上存儲密碼
- 12. AES加密 - 密碼,salt沒有解決?
- 13. 使用sha256密碼AES加密
- 14. 使用RijndaelManged類的AES加密:Baes64編碼和解碼aes加密字符串
- 15. 用於AES加密解密的任何可可源代碼?
- 16. 通緝兼容AES代碼Iphone,Android,Windows/XP加密/解密
- 17. AES加密/解密
- 18. 加密AES密鑰?
- 19. AES密鑰,加密
- 20. 彙編代碼。加密解密例程
- 21. 密碼加密/數據庫層AES或應用層AES
- 22. 如何在AES數據庫中存儲AES加密密碼
- 23. 在iOS上解密android AES示例
- 24. 在C++中解密AES示例
- 25. 「Hasty Pudding」密碼的示例源代碼?
- 26. 使用CFB 128位AES加密對數據進行加密/解密的代碼
- 27. 解密AES中的AES加密字段
- 28. CryptoJS AES加密和Java AES解密
- 29. AES Java加密
- 30. AES加密quellcode
依我看他使用PKI客戶端 - 服務器交互,需要存儲相關的公鑰和私鑰。雖然在這種情況下不是完全標準的做法,但AES是保護PKI密鑰的合理方法。 – 2008-11-05 14:59:15