我一直无法使用RSA公钥加密.以下是重现问题的示例JUnit代码:
public class CryptoTests {
private static KeyPair keys;
@BeforeClass
public static void init() throws NoSuchAlgorithmException{
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
SecureRandom random = CryptoUtils.getSecureRandom();
keyGen.initialize(2176, random);
keys = keyGen.generateKeyPair();
}
@Test
public void testRepeatabilityPlainRSAPublic() throws EdrmCryptoException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException{
byte[] plaintext = new byte [10];
Random r = new Random();
r.nextBytes(plaintext);
Cipher rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, keys.getPublic());
byte[] encrypted1 = rsa.doFinal(plaintext);
rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, keys.getPublic());
byte[] encrypted2 = rsa.doFinal(plaintext);
rsa = Cipher.getInstance("RSA");
rsa.init(Cipher.ENCRYPT_MODE, keys.getPublic());
byte[] encrypted3 = …Run Code Online (Sandbox Code Playgroud) 我想用RSA密钥设计一个产品密钥,但我不知道我的想法
中的安全性是安全还是不安全?
我对设计产品关键的想法:
我有一对密钥,例如
公钥是:MIIBvTCCASYCCQD55fNzc0WF7TANBgkqhkiG9w0BAQUFADAjMQswCQYDVQQG ...
私钥是:MIICWwIBAAKBgQDRhGF7X4A0ZVlEg594WmODVVUIiiPQs04aLmvfg8SborHss5gQ ....
我创建这样的产品密钥:(
eaxmple的私钥开始)MIICWwIBAAKBgQDRh
并从软件中的私钥中删除它
当用户没有产品密钥时无法解码密钥
注意: 对于那些无法做出比无聊,无知的评论甚至是关闭有效问题的建议更好的人,请在此处查看接受的答案:使用GNU/Linux系统调用`splice`进行零拷贝Socket to Socket Haskell中的数据传输是如何为那些真正寻求建设性答案的人提供适当帮助的一个很好的例子!
嗨,我刚刚阅读PowerMod了Mathematica 8的文档,想要测试Haksell RSA包(ghc --make -O2 -O3 -fllvm -optlo-O3 test.hs):
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Monad
import System.Random
import Codec.Crypto.RSA
import Data.ByteString.Lazy
import Data.ByteString.Char8
import Criterion.Main
import Criterion.Config
main :: IO ()
main = do
print m1
print m4
print m8
defaultMainWith defaultConfig (return ()) [
bgroup "RSA" [
bench "1" $ ed m1
, bench "4" $ ed m4
, bench "8" $ …Run Code Online (Sandbox Code Playgroud) 我将实现RSA加密.我想知道.加密比RSA加密中的解密快多少倍.我通过使用System.currentTimeMillis()尝试在java中计算经过的时间; 但是给我时间加密= 0.05毫秒,而时间解密0.55毫秒意味着从1:11.我认为这个结果不合理我的代码是如下
//here my key has 256 bits
for (;;) {
long begin = System.currentTimeMillis();
for (int i = 0; i < num; i++) {
decrypt();
}
long end = System.currentTimeMillis();
long time = end - begin;
if (time >= 10000) {
System.out.printf("Average Encryption takes: %.2f ms\n",
(double) time / num);
break;
}
num *= 2;
}
p = BigInteger.probablePrime(128, random);
q = BigInteger.probablePrime(128, random);
N = (p.subtract(one)).multiply(q.subtract(one));
e = BigInteger.probablePrime(32, random);
d = e.modInverse(N);
private void encrypt()
{ …Run Code Online (Sandbox Code Playgroud) 在这个简单的示例中,假设一个权限使用公共RSA密钥(e = 11,n = 85)来签署文档.你希望他们签署你的消息(这是号码42),但你不希望他们知道他们签署了什么,所以你使用11的盲目因子"r".在你的计算中你可能希望使用以下结果:
11 ? 35 = 1 mod 64
11 ? 31 = 1 mod 85
Run Code Online (Sandbox Code Playgroud)
显示简短的工作.
1)您应该授权签署什么号码?
2)当局会给你多少号码?
3)从该号码中提取42的签名.
4)使用私钥验证此答案.
我已经看过了,如果有人能和我一起指导这个例子,我将非常感激.
我想从Autenticode签名的.Net DLL中提取C#中的公共密钥,而不是公共密钥令牌吗?
好的,所以我正在寻找一种使用RSA和AES加密/解密更大文件的方法.我不太明白我需要做什么.
场景是我有更大的文件(200kb - 50mb).我希望能够加密特定文件,在当前目录中保留密钥(私钥)以及加密文件.然后,用户可以保存密钥,随身携带密钥并在以后返回解密文件.
我只是不太明白如何使用AES/RSA来实现这一目标.我有一些代码可以进行简单的RSA加密/解密和一些有效的AES代码.我从其他SO问题中得到了这个代码.
我正在使用Openssl和C++.
目前的AES计划:(来自网上)
int main() {
int bytes_read, bytes_written;
unsigned char indata[AES_BLOCK_SIZE];
unsigned char outdata[AES_BLOCK_SIZE];
/* ckey and ivec are the two 128-bits keys necesary to
en- and recrypt your data. Note that ckey can be
192 or 256 bits as well */
unsigned char ckey[] = "thiskeyisverybad";
unsigned char ivec[] = "dontusethisinput";
/* data structure that contains the key itself */
AES_KEY key;
/* set the encryption key */
AES_set_encrypt_key(ckey, 128, &key);
/* set where …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个RSA加密软件工具,每次都会使用相同的密钥.这是我到目前为止所拥有的.
import Crypto
from Crypto.PublicKey import RSA
from Crypto import Random
key = <_RSAobj @0x24b6348 n<1024>,e,d,p,q,u,private>
publickey = key.publickey()
encrypted = publickey.encrypt('hi', 32)
print(encrypted)
Run Code Online (Sandbox Code Playgroud)
我在第5行指向<符号时出现语法错误.我知道这是一个有效的私钥.问题是什么,如何解决?我也在使用python 2.7.3
[编辑]我从这段代码中获取密钥
import Crypto
from Crypto.PublicKey import RSA
from Crypto import Random
import os
random_generator = Random.new().read
key = RSA.generate(1024, random_generator)
print(key)
raw_input()
Run Code Online (Sandbox Code Playgroud)
另外,我在'raw_input()'之后从这段代码中得到'RSA密钥格式不支持错误'
import Crypto
from Crypto.PublicKey import RSA
from Crypto import Random
text_file = open("keyfile.txt", "w")
text_file.write('<_RSAobj @0x24b6348 n<1024>,e,d,p,q,u,private>')
text_file.close()
raw_input()
with open('keyfile.txt', 'r') as f:
externKey = f.readline()
key = RSA.importKey(externKey, passphrase=None) …Run Code Online (Sandbox Code Playgroud) 我在C#dotnet核心测试RSA.我创建了两个RSA对象,一个用于加密,另一个用于解密.我从第一个rsa对象导出公钥,并将其导入另一个对象.当第二个解密密码数组时,它会抛出Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException.代码如下:
String plainstr = "Hello World";
RSA rsa1 = RSA.Create();
RSA rsa2 = RSA.Create();
rsa1.KeySize = 1024;
rsa2.KeySize = 1024;
byte[] cipherbytes = rsa1.Encrypt(Encoding.ASCII.GetBytes(plainstr), RSAEncryptionPadding.Pkcs1);
//If the parameter is true, it works well. But when I use it in an actual project, I won't pass the private key.
RSAParameters parameters = rsa1.ExportParameters(false);
rsa2.ImportParameters(parameters);
//Exception is here.
byte[] plaintbytes = rsa2.Decrypt(cipherbytes, RSAEncryptionPadding.Pkcs1);
Console.WriteLine(Encoding.ASCII.GetString(plaintbytes));
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud) rsa ×10
cryptography ×3
openssl ×3
c# ×2
encryption ×2
.net ×1
.net-core ×1
aes ×1
benchmarking ×1
c++ ×1
cryptoapi ×1
dsa ×1
ecdsa ×1
haskell ×1
java ×1
license-key ×1
licensing ×1
performance ×1
python ×1
python-2.7 ×1
security ×1
ssl ×1