javascript - 匹配 C# 中的 Javascript RSA 加密
问题描述
我正在尝试在 C# 中转换一个 JavaScript 加密函数。但没有得到有效的输出。有人可以帮我解决这个问题。下面是我用于加密的 JavaScript 函数
function encryptPassword()
{
var password="samplepassword"; mod="ce33b5600160ba9354a0e56ee3e43369e9a824e0f88e20ad52bbde015cc8c8fed57aa2d65c4eb13dc099f38718fcbc471e60bb4d82a5e05b6a64c5dc8d2e17ca44c205a6c54540d4884285808e829043b2f11838dc5d603750616bf5fd711d810b50f7a468e31d0cfc5b70e6a72fe887a2e26db44c3868a86febb5e4c5f6c27000b202a0460488db3eac48f1ee80e7ca6bb8a9af2b985c28aa25ecdc74e485abd20311c21add507e8c65c3d11d743ebbd76c44933bb68981e1171376d1ddf33607fa2116cb747f0c3f238bae5b01878004157cfef9c8cdd697ee39759625f84abd89469a8b8cd9eabb2e79fd9269ab4e62670d6ec8b5b1f6d986385b2394bfdb";
var rsa = new RSAKey();
rsa.setPublic(mod, "10001");
var res = rsa.encrypt(password);
if(res) {
document.getElementById('password').value=res;
return true;
}
else
{
return false;
}
}
下面是我的 C# 实现。但不知何故,我没有得到正确的输出。C# 生成的输出未在服务器端验证。
C# 代码
public static string EncryptRSAx(string public_keyHex, uint exp, string data)
{
byte[] bytes = new byte[public_keyHex.Length / 2];
for (int i = 0; i < public_keyHex.Length - 1; i += 2)
{
bytes[i / 2] = byte.Parse(public_keyHex.Substring(i, 2), System.Globalization.NumberStyles.HexNumber);
}
string public_key = Convert.ToBase64String(bytes);
return RSAEncrypt(public_key, Convert.ToBase64String(BitConverter.GetBytes(exp)), data);
}
public static string RSAEncrypt(string public_key, string exponent, string data)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
//rsa.FromXmlString()
rsa.FromXmlString(String.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue>", public_key, exponent));
byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data);
byte[] cipherbytes = rsa.Encrypt(plainbytes,false);
return Convert.ToBase64String(cipherbytes);
}
解决方案
推荐阅读
- java - The recipient you have identified is not a valid recipient of the specified envelope
- hugo - Paginator doesn't override pagination settings
- linux - 套接字保存在内核中的什么位置?
- java - 无法在 PostMan 中执行 PUT 命令
- php - MySQLi:绑定变量的数量与准备好的语句中的字段数量不匹配
- facebook-graph-api - 如何在我的页面上获得帖子的“真实”作者
- javascript - 从 DomParser 获取元素列表
- ios - CocoaPods 找不到 pod“Firebase/Analytics”的兼容版本
- flutter - 在初始化期间读取静态变量 => Flutter Navigator.push
- mysql - 未选择数据库 双击选择要使用的默认数据库