【发布时间】:2019-01-04 08:13:55
【问题描述】:
在使用 Identity 框架和 Owin 的 WebApi 项目中,授权和身份验证工作正常。下一步是我想让我的不记名令牌更安全,并且需要实现不记名令牌的加密和解密。
加密的字符串将在验证之前在 Actionfilter 中解密。有什么推荐的方法吗?我尝试了 AES 和 DES 的多种实现,但我正在尝试实现任何推荐的方法。
AES 实施:
static byte[] Encrypt(string plainText, byte[] Key, byte[] IV) {
byte[] encrypted;
// Create a new AesManaged.
using(AesManaged aes = new AesManaged()) {
// Create encryptor
ICryptoTransform encryptor = aes.CreateEncryptor(Key, IV);
// Create MemoryStream
using(MemoryStream ms = new MemoryStream()) {
// Create crypto stream using the CryptoStream class. This class is the key to encryption
// and encrypts and decrypts data from any given stream. In this case, we will pass a memory stream
// to encrypt
using(CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) {
// Create StreamWriter and write data to a stream
using(StreamWriter sw = new StreamWriter(cs))
sw.Write(plainText);
encrypted = ms.ToArray();
}
}
}
// Return encrypted data
return encrypted;
}
static string Decrypt(byte[] cipherText, byte[] Key, byte[] IV) {
string plaintext = null;
// Create AesManaged
using(AesManaged aes = new AesManaged()) {
// Create a decryptor
ICryptoTransform decryptor = aes.CreateDecryptor(Key, IV);
// Create the streams used for decryption.
using(MemoryStream ms = new MemoryStream(cipherText)) {
// Create crypto stream
using(CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)) {
// Read crypto stream
using(StreamReader reader = new StreamReader(cs))
plaintext = reader.ReadToEnd();
}
}
}
return plaintext;
}
【问题讨论】:
标签: c# asp.net-web-api encryption oauth