有没有办法以加密方式存储数据,以便可以使用多个不同的密钥对数据进行解密?
即如果我使用key1加密数据,但我希望能够使用密钥2,3和4进行解密.
这可能吗?
通过阅读各种材料,无论我理解什么,公钥 - 私钥对都是不对称加密的基础,也是选择2个素数(大致是你的私钥)并乘以它们(大致是你的公钥)的东西,我如果您知道私钥,则可能会生成公钥.这是正确的还是我错了什么?
[编辑]
让我更加困惑的是,只能使用私钥(使用.NET类RSACryptoServiceProvider)将RSA密钥序列化为XML .不确定这个限制是否有意!
给定以下RSA密钥,如何确定p和q的值是什么?
Public Key: (10142789312725007, 5)
Private Key: (10142789312725007, 8114231289041741)
Run Code Online (Sandbox Code Playgroud) 调用以下函数时:
byte[] bytes = rsa.Encrypt(System.Text.UTF8Encoding.UTF8.GetBytes(stringToEncrypt), true);
Run Code Online (Sandbox Code Playgroud)
我现在得到错误:长度不好.
使用较小的字符串可以工作,任何想法问题可能是我传递的字符串不到200个字符.
我是加密新手.我需要实现非对称加密算法,我认为它使用私钥/公钥.我开始使用RSACryptoServiceProvider的示例.加密的小数据是可以的.但是当在相对较大的数据"2行"上使用它时,我得到异常CryptographicException"Bad Length"!
//Create a new instance of RSACryptoServiceProvider.
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
//Import the RSA Key information. This only needs
//toinclude the public key information.
//RSA.ImportParameters(RSAKeyInfo);
byte[] keyValue = Convert.FromBase64String(publicKey);
RSA.ImportCspBlob(keyValue);
//Encrypt the passed byte array and specify OAEP padding.
//OAEP padding is only available on Microsoft Windows XP or
//later.
encryptedData = RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
}
Run Code Online (Sandbox Code Playgroud)
然后我找到了一些使用CryptoStream加密大数据(或文件)的样本,并且只使用DES或3DES等对称算法,它们具有CreateEncryptor函数,将ICryptoTransform作为CryptoStream构造函数的输入之一返回!
CryptoStream cStream = new CryptoStream(fStream,
new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),
CryptoStreamMode.Write);
Run Code Online (Sandbox Code Playgroud)
使用RSA加密文件的方法是什么?
我需要使用公钥(pem文件)加密字符串,然后使用私钥(也是pem)对其进行签名.
我正在加载pem文件:
publicCert = fs.readFileSync(publicCertFile).toString();
Run Code Online (Sandbox Code Playgroud)
但经过几个小时的谷歌搜索后,我似乎找不到使用公钥加密数据的方法.在php中我只是调用openssl_public_encrypt,但我没有在节点或任何模块中看到任何相应的函数.
如果有人有任何建议,请告诉我.
我需要从文件加载以下RSA公钥以与RSACryptoServiceProvider类一起使用.我怎样才能做到这一点?
-----BEGIN PUBLIC KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/syEKqEkMtQL0+d
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+izR
KbGMRtur2TYklnyVkjeeHfAggo8vWQmWesnOG55vQYHbOOFoJbk0EkwEr5R/PbKm
byXPPN8zwnS5/XXXXXXXXXXXX
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)
此代码适用于我的pub键:http://www.jensign.com/opensslkey/
这是我正在使用的代码
static string RSA(string input)
{
RSACryptoServiceProvider rsa = DecodeX509PublicKey(Convert.FromBase64String(GetKey()));
return (Convert.ToBase64String(rsa.Encrypt(Encoding.ASCII.GetBytes(input), false)));
}
static string GetKey()
{
return File.ReadAllText("master.pub").Replace("-----BEGIN PUBLIC KEY-----", "").Replace("-----END PUBLIC KEY-----", "");
//.Replace("\n", "");
}
private static bool CompareBytearrays(byte[] a, byte[] b)
{
if (a.Length != b.Length)
return false;
int i = 0;
foreach (byte c in a)
{
if (c != b[i])
return false;
i++;
}
return true;
}
public …Run Code Online (Sandbox Code Playgroud) 我必须通过未加密的通道(HTTP,而不是HTTPS)通过JavaScript AJAX调用传输一些敏感信息.
我想对数据进行加密,但JavaScript方面的加密意味着我公开了密钥,这使得对称加密只是默默无闻的安全措施.
JavaScript有任何非对称加密吗?这样,我可以保密服务器解密密钥.(我不担心Server> JavaScript消息的安全性,只关心某个JavaScript> Server消息的安全性)
javascript security encryption encryption-asymmetric public-key-encryption
我正在寻找一种文件加密/解密算法,它满足以下要求:
是否有建议算法的Ruby实现?
ruby encryption ruby-on-rails encryption-asymmetric public-key-encryption
encryption ×5
rsa ×4
c# ×3
cryptography ×2
.net ×1
3des ×1
gnupg ×1
javascript ×1
keystore ×1
math ×1
node.js ×1
public-key ×1
ruby ×1
security ×1
truststore ×1