标签: rsa

为什么RSA加密文本会为同一文本提供不同的结果

我使用RSA加密使用openSSL加密数据,效果很好.我对RSA的理解是,使用相同的公钥加密相同的数据总会给你相同的结果(如此处此处所述).

但是,使用openssl每次重复加密时都会得到不同的结果.例如:

?  ~  echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin  | shasum
      11b6e058273df1ebe0be5e0596e07a6c51724ca0  -

?  ~  echo '30' | openssl rsautl -encrypt -inkey pub.pem -pubin  | shasum
      05cb82595f7429ef196189f4e781088597d90eee  -
Run Code Online (Sandbox Code Playgroud)

那么为什么输出不是唯一的呢?是因为我得到RSA加密错误还是因为openssl做了一些额外的魔术?

实际上我正在尝试设计一个只存储RSA加密数据的数据库.我想对加密信息的哈希值进行搜索,如果加密过程本身不是唯一的,这是不可能的.

unix terminal openssl cryptography rsa

39
推荐指数
2
解决办法
2万
查看次数

RSA签名大小?

我想知道RSA签名的长度是多少?是否总是与RSA密钥大小相同,如果密钥大小为1024,则RSA签名为128字节,如果密钥大小为512位,则RSA签名为64字节?什么是RSA模数?那么RSA-sha1是什么意思?任何指针都非常感激.

security cryptography sha1 rsa digital-signature

38
推荐指数
1
解决办法
4万
查看次数

C#将RSACryptoServiceProvider中的私有/公共RSA密钥导出为PEM字符串

我有一个System.Security.Cryptography.RSACryptoServiceProvider的实例,我需要将它的密钥导出到PEM字符串 - 如下所示:

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDUNPB6Lvx+tlP5QhSikADl71AjZf9KN31qrDpXNDNHEI0OTVJ1
OaP2l56bSKNo8trFne1NK/B4JzCuNP8x6oGCAG+7bFgkbTMzV2PCoDCRjNH957Q4
Gxgx1VoS6PjD3OigZnx5b9Hebbp3OrTuqNZaK/oLPGr5swxHILFVeHKupQIDAQAB
AoGAQk3MOZEGyZy0fjQ8eFKgRTfSBU1wR8Mwx6zKicbAotq0CBz2v7Pj3D+higlX
LYp7+rUOmUc6WoB8QGJEvlb0YZVxUg1yDLMWYPE7ddsHsOkBIs7zIyS6cqhn0yZD
VTRFjVST/EduvpUOL5hbyLSwuq+rbv0iPwGW5hkCHNEhx2ECQQDfLS5549wjiFXF
gcio8g715eMT+20we3YmgMJDcviMGwN/mArvnBgBQsFtCTsMoOxm68SfIrBYlKYy
BsFxn+19AkEA82q83pmcbGJRJ3ZMC/Pv+/+/XNFOvMkfT9qbuA6Lv69Z1yk7I1ie
FTH6tOmPUu4WsIOFtDuYbfV2pvpqx7GuSQJAK3SnvRIyNjUAxoF76fGgGh9WNPjb
DPqtSdf+e5Wycc18w+Z+EqPpRK2T7kBC4DWhcnTsBzSA8+6V4d3Q4ugKHQJATRhw
a3xxm65kD8CbA2omh0UQQgCVFJwKy8rsaRZKUtLh/JC1h1No9kOXKTeUSmrYSt3N
OjFp7OHCy84ihc8T6QJBANe+9xkN9hJYNK1pL1kSwXNuebzcgk3AMwHh7ThvjLgO
jruxbM2NyMM5tl9NZCgh1vKc2v5VaonqM1NBQPDeTTw=
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

但根据MSDN文档,没有这样的选项,只有某种XML导出.我不能使用任何第三方库,如BouncyCastle.有没有办法生成这个字符串?

c# cryptography rsa pem

37
推荐指数
5
解决办法
4万
查看次数

什么原因导致在ruby中构建公钥时"PUB键和PRIV键都没有嵌套asn1错误"?

通过传递.pem文件使用OpenSSL :: PKey :: RSA模块构建公钥时,响应的原因是什么:

OpenSSL::PKey::RSAError: Neither PUB key nor PRIV key:: nested asn1 error
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `initialize'
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `new'
from /Users/Matt/projects/placepop/lib/apn.rb:48:in `open'
from (irb):1
Run Code Online (Sandbox Code Playgroud)

这是来源:

cert = File.join(rails_root, 'config', 'apns', 'sandbox-cert.pem')
APN_CONFIG = { :delivery => { 
                              :host => 'gateway.sandbox.push.apple.com', 
                              :cert => cert,
                              :passphrase => "",
                              :port => 2195 },
               :feedback => {  
                              :host => 'feedback.sandbox.push.apple.com',
                              :port => 2196,
                              :passphrase => "",
                              :cert => cert} }


options = APN_CONFIG[:delivery].merge(options)
cert = File.read(options[:cert])
ctx = OpenSSL::SSL::SSLContext.new
ctx.key = OpenSSL::PKey::RSA.new(cert, …
Run Code Online (Sandbox Code Playgroud)

ssl rsa ruby-on-rails certificate apple-push-notifications

36
推荐指数
4
解决办法
4万
查看次数

使用PHP中的RSA加密和解密文本

是否有任何PHP 5.3的类,它将使用RSA提供文本加密/解密而无需填充?

我有私钥和公钥,p,q和模数.

php rsa

36
推荐指数
3
解决办法
11万
查看次数

我可以在本地使用RSA密钥测试身份验证吗?

如果您正在为RSA密钥提供正确的密码,是否有办法在本地进行检查?

我最近无法将一些提交推送到github,因为推送提示输入密码然后验证失败.我验证了github id_rsa在我的~/.ssh目录中有正确的文件公钥,我确认我可以使用Github进行身份验证(如果ssh git@github.com它会告诉您已经过身份验证但是他们不提供shell访问权限),所以我知道问题所在在我的尽头,而不是Github的.

(我应该指出,此时我只是习惯git format-patch将我的提交作为文件,然后吹走我的工作存储库并从Github重新克隆,重新应用补丁git am,并毫不费力地推送,所以无论原始问题是什么,它是固定的.)

这让我想知道:我怎么知道远程主机的身份验证问题是我向我的私钥提供了错误的密码,还是远程主机没有识别我的密钥?有没有办法在本地使用私钥进行测试身份验证,而无需尝试连接到远程主机?

ssh rsa ssh-keys

34
推荐指数
2
解决办法
3万
查看次数

Android RSA Keypair Generation - 我应该使用Standard Java/Bouncy Castle/Spongy Castle/JSch/Other吗?

我一直在寻找一周左右的时间来实现我想到的方法.我已经看过很多关于所有这些不同方法的文章,但我仍然感到困惑,所以我希望有人可以传播他们对这些主题的知识,这样我就可以更轻松地创建我追捧的方法和在Android中实现它.

我的"追捧"方法:

  1. 必须生成RSA公钥和私钥
  2. 公共必须有PKCS#1填充
  3. 必须是RSA 2048
  4. 返回Byte数组中的公钥

显然你可以用四种方式去做:

  1. 标准Java
  2. 充气城堡
  3. 海绵城堡(Android友好?)
  4. JSch

由于我对安全性和Java整体都很陌生,所以我想知道是否有人能够最终对所有这些做出明确的解释.

以下是我尝试在4种不同的编程方法中实现我所追求的方法(如上所述)的方法.如果我不知道它是什么,因为我无法弄清楚各自的文件.请随时纠正我.

1.标准Java(不确定PKCS#1):

public byte[] returnPublicKeyInBytes() throws NoSuchAlgorithmException {
    KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
    kpg.initialize(2048);
    KeyPair keyPair = kpg.genKeyPair();
    byte[] pri = keyPair.getPrivate().getEncoded();
    byte[] pub = keyPair.getPublic().getEncoded();
    return pub;
}
Run Code Online (Sandbox Code Playgroud)

2. Bouncy Castle(尚未功能= /创意?):

public byte[] returnPublicKeyInBytes() throws NoSuchAlgorithmException {
    RSAKeyPairGenerator r = new RSAKeyPairGenerator();
    r.init(new KeyGenerationParameters(new SecureRandom(),4096));
    AsymmetricCipherKeyPair keys = r.generateKeyPair();
    CipherParameters pri = keys.getPrivate();
    CipherParameters pub = keys.getPublic();
    byte[] pubbyte = pub.toString().getBytes();
    return pubbyte; //NOT WORKING …
Run Code Online (Sandbox Code Playgroud)

java security android rsa bouncycastle

34
推荐指数
1
解决办法
2万
查看次数

使用公钥加密在Javascript中加密,在PHP中解密

我想用JavaScript加密,用PHP解密,使用公钥加密.我一直在努力寻找可以实现这一目标的库,但我遇到了问题.

我目前正在查看openpgpjs,但我需要在所有浏览器中提供支持,甚至测试页面也只在列出的受支持浏览器(Google Chrome)上出现错误.

关于最终目标的说明:

TCP连接已受SSL保护.这一保护层的主要目的是防止有意或无意的网络服务器日志记录,崩溃转储等.

在PHP端,将生成临时私钥(它将在短时间后过期).调用者(在Javascript中)负责在新的公钥到期时要求它.私钥到期的原因是为了防止记录加密数据解密,以防存储私钥的服务器稍后被泄露.

服务器受损的情况:有人获取除数据库服务器之外的所有计算机的备份(并且由于防火墙而无法访问数据库,即使他找到了用户和密码).由于加密记录数据的私钥不再存在,攻击者无法做到.

javascript php rsa pgp public-key

33
推荐指数
3
解决办法
4万
查看次数

我们可以为RSA提供多个带有一个私钥的公钥吗?

我们是否可以将多个公钥与一个私钥相关联以进行RSA公钥加密?

cryptography rsa public-key-encryption

32
推荐指数
1
解决办法
2万
查看次数

用于C++的RSA加密库

我正在开发一个Win32应用程序,我想使用RSA加密库.你会推荐哪个图书馆?

c++ encryption winapi rsa

31
推荐指数
6
解决办法
4万
查看次数