我尝试使用查询字符串在另一个页面中发送EmployeeId,但我想以加密格式发送它。
如果有人知道答案,任何帮助都是很有帮助的。
答案 0 :(得分:1)
来自http://www.infoexpediters.com/SecureQueryString.cs:
public string encrypt(string serializedQueryString)
{
byte[] buffer = Encoding.ASCII.GetBytes(serializedQueryString);
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
des.Key = MD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(cryptoKey));
des.IV = IV;
return Convert.ToBase64String(
des.CreateEncryptor().TransformFinalBlock(
buffer,
0,
buffer.Length
)
);
}
public string decrypt(string encryptedQueryString)
{
try
{
byte[] buffer = Convert.FromBase64String(encryptedQueryString);
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
des.Key = MD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(cryptoKey));
des.IV = IV;
return Encoding.ASCII.GetString(
des.CreateDecryptor().TransformFinalBlock(
buffer,
0,
buffer.Length
)
);
}
catch (CryptographicException)
{
throw new InvalidQueryStringException();
}
catch (FormatException)
{
throw new InvalidQueryStringException();
}
}
答案 1 :(得分:0)
使用POST而非GET,这样在网址中不可见。在发送之前在POST主体上实现一些小加密,并在接收时解密。
我假设你在网页上使用javascript?提供有关您正在使用的语言(php / python等?)的更多信息,以获取更具体(和代码)的内容
答案 2 :(得分:0)
您可能会或可能不会真正需要加密,但假设您这样做,您可以使用三重des(或任何您想要的)在PHP中执行此操作:
// Init mcrypt stuff
$descriptor = mcrypt_module_open('tripledes', '', MCRYPT_MODE_ECB, '');
$key = substr(md5('put your secret here'), 0, mcrypt_enc_get_key_size($descriptor));
$vector = mcrypt_create_iv(mcrypt_enc_get_iv_size($descriptor), MCRYPT_RAND);
mcrypt_generic_init($descriptor, $key, $vector);
// Encrypt id
$encryptedEmployeeId = mcrypt_generic($descriptor, $_GET['EmployeeId']);
// Clean up mcrypt
mcrypt_generic_deinit($descriptor);
mcrypt_module_close($descriptor);
除了使用mdecrypt_generic()之外,反向过程类似。当然,我假设您正在使用PHP:)。