标签: bouncycastle

生成pgp密钥的问题?

我正在使用RSACryptoServiceProvider我生成了公钥和私钥.它生成的密钥采用以下格式:

公钥:

<RSAKeyValue>
    <Modulus>m9bAoh2...eGNKYs=</Modulus>
    <Exponent>AQAB</Exponent>
</RSAKeyValue> 
Run Code Online (Sandbox Code Playgroud)

私钥:

<RSAKeyValue>
    <Modulus>m9bAo...ZAIeGNKYs=</Modulus>
    <Exponent>AQAB</Exponent>
    <P>xGj/UcXs...R1lmeVQ==</P>
    <Q>yx6e18aP...GXzXIXw==</Q>
    <DP>NyxvnJ...1xAsEyQ==</DP>
    <DQ>La17Jycd...FhApEqwznQ==</DQ>
    <InverseQ>JrG7WCT...Hp3OWA==</InverseQ>
    <D>RdWsOFn....KL699Vh6HK0=</D>
</RSAKeyValue>
Run Code Online (Sandbox Code Playgroud)

但是使用PGP桌面我生成了这样的键 -

公钥:

mQCNBEoOlp8BBACi/3EvBZ83ZduvG6YHu5F0P7Z3xOnpIsaPvTk0q+dnjwDUa5sU 
lEFbUZgDXSz7ZRhyiNqUOy+IG3ghPxpiKGBtldVpi33qaFCCEBiqsxRRpVCLgTUK 
HP2kH5ysrlFWkxTo 
=a4t9 
Run Code Online (Sandbox Code Playgroud)

私钥:

lQHgBEoOlp8BBACi/3EvBZ83ZduvG6YHu5F0P7Z3xOnpIsaPvTk0q+dnjwDUa5sU 
lEFbUZgDXSz7ZRhyiNqUOy+IG3ghPxpiKGBtldVpi33qaFCCEBiqsxRRpVCLgTUK 
waBnEitQti3XgUUEZnz/rnXcQVM0QFBe6H5x8fMDUw== 
=CVPD 
Run Code Online (Sandbox Code Playgroud)

因此,当我传递PGP Desktop生成的密钥时,它能够完美地进行加密和解密,但是当我传递RSACryptoServiceProvider生成的密钥时,我无法加密和解密?

谁能告诉我如何在PGP生成的模式中生成密钥?

c# bouncycastle

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

Java AES 256安全密钥生成器 - 密钥大小非法

我正在尝试生成加密密钥:

public static final String ENCYT_ALGORITHM = "AES/ECB/PKCS7Padding";
public static final String KEY_ALGORITHM = "PBEWITHSHA256AND256BITAES-CBC-BC" ;
//BENCYT_ALGORITHMSE64Encoder encod = new BENCYT_ALGORITHMSE64Encoder();
//BENCYT_ALGORITHMSE64Decoder decod = new BENCYT_ALGORITHMSE64Decoder();

public Encryption(String preMaster,String text,int x){      
    this.preMaster=preMaster;       
    this.text=text.getBytes();
}
public void keyGenerator(){
    KeyGenerator kg = null;
    try {
        kg = KeyGenerator.getInstance("AES");
        secret = kg.generateKey();
    } catch (Exception e) {
        // TODO ENCYT_ALGORITHMuto-generated catch block
        e.printStackTrace();
    }

}

public String preMaster() {

    byte[] keys = null;
    keys = preMaster.getBytes();
    int x = -1;
    int process = …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle aes

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

哪个OpenSSL版本用于bouncycastle库?

我在Android中使用BouncyCastle Library进行OpenSSL加密.我的图书馆版本是1.45.

我想知道在库中使用OpenSSL版本.任何人都可以帮我,我怎么能找到它?

openssl bouncycastle

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

Java Bouncy Castle OCSP Url

我正在使用充气城堡1.48来验证OCSP的证书验证.它运作良好.但我使用Ocsp Url作为静态变量,我想从证书中读取它.Url以证书形式写成Authority Info Access

[1]Authority Info Access
 Access Method=On-line Certificate Status Protocol (1.3.6.1.5.5.7.48.1)
 Alternative Name:
      URL=http://ocsp.mydomain
Run Code Online (Sandbox Code Playgroud)

org.bouncycastle.asn1.x509.AuthorityInformationAccess从证书中得到了对象

byte[] octetBytes = certificate.getExtensionValue(X509Extension.authorityInfoAccess.getId());
ASN1InputStream octetStream = new ASN1InputStream(octetBytes);
byte[] encoded = X509ExtensionUtil.fromExtensionValue(octetBytes).getEncoded();
ASN1Sequence seq = ASN1Sequence.getInstance(ASN1Primitive.fromByteArray(encoded));
AuthorityInformationAccess access = AuthorityInformationAccess.getInstance(seq);
Run Code Online (Sandbox Code Playgroud)

写道,AuthorityInformationAccess: Oid(1.3.6.1.5.5.7.48.1)但不能从那里得到Url

java bouncycastle ocsp certificate

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

AES/GCM(AES-128-GCM)身份验证标记在C#和Ruby中有所不同

我正在尝试在C#中生成一个身份验证标记,我已经在Ruby中生成了(用于测试目的).然而结果是不同的,但据我所知,输入是相同的.

在Ruby 2.0中使用OpenSSL 1.0.1c(Ubuntu 13.04):

require 'openssl'
require 'base64'
iv = Base64.decode64('kEWio77T7qWdytrIbUmRxA==')
key = Base64.decode64('FnUoIZvBUzC1Q/rn5WMi7Q==')
aad = Base64.decode64('/tTP07sPkoX8gah60eH89w==')
cipher = OpenSSL::Cipher.new('aes-128-gcm').encrypt
cipher.iv = iv
cipher.key = key
cipher.auth_data = aad
cipher.final
tag = Base64.strict_encode64(cipher.auth_tag)
Run Code Online (Sandbox Code Playgroud)

生成的(编码的)标签是 ie74XTWtSLNad0BKdrhvmQ==

在C#中使用BouncyCastle(片段):

var iv = Convert.FromBase64String("kEWio77T7qWdytrIbUmRxA==");
var key = Convert.FromBase64String("FnUoIZvBUzC1Q/rn5WMi7Q==");
var aad = Convert.FromBase64String("/tTP07sPkoX8gah60eH89w==");
var cipher = new GcmBlockCipher(new AesFastEngine());
var parameters = new AeadParameters(new KeyParameter(passkey), 128, iv, aad);
cipher.Init(true, parameters);
var cipherText = new byte[cipher.GetOutputSize(0)];
cipher.DoFinal(cipherText, 0);
var tag = Convert.ToBase64String(cipher.GetMac());
Run Code Online (Sandbox Code Playgroud)

C#中生成的标签是 sawCcwM1T8sGl5y6VT0CHA==

我在这做错了什么?在此先感谢您的回复!

c# ruby openssl bouncycastle aes-gcm

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

用Java生成X509Certificate的主题哈希

我目前正在尝试使用Java安全API和BouncyCastle生成主题哈希。

使用Openssl库时,这是我的工作:

openssl x509 -in  /Users/Sn0wfreezeDev/Downloads/Test.pem -hash
Run Code Online (Sandbox Code Playgroud)

这会生成一个短的8位数字哈希1817886a

这是我的Java代码

X509Certificate cert = CertManager.getCertificate(number, c);  
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
System.out.println("  Subject " + cert.getSubjectDN());
System.out.println("   Issuer  " + cert.getIssuerDN());
sha1.update(cert.getSubjectDN().getName().getBytes());
String hexString =  bytesToHex(sha1.digest());
System.out.println("   sha1    " + hexString);
System.out.println();
Run Code Online (Sandbox Code Playgroud)

java hash openssl bouncycastle x509certificate

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

bouncycastle错误"JCE无法验证提供程序BC"与"jar-with-dependencies"

我正在创建一个使用bouncycastlejava独立应用程序.一切都在日蚀中起作用.我正在创建一个像这样依赖jar.

当我使用"java -jar myapp-0.0.1-SNAPSHOT-jar-with-dependencies.jar"运行应用程序时.

我收到以下错误:

java.io.IOException: exception encrypting data - java.lang.SecurityException: JCE cannot authenticate the provider BC
Run Code Online (Sandbox Code Playgroud)

我的代码:

    Security.addProvider(new BouncyCastleProvider());        
    String keystoreDirectory = "C:/myapp/security";
    File file = new File(keystoreDirectory + "/" + PRIVATE_KEY_FILE);

    if (!file.isFile()) {
        try {

            Configuration idOrganization = configurationBoundary.find(Configuration.ID_ORGANIZATION);

            KeyStore store = KeyStore.getInstance("PKCS12", SECURITY_PROVIDER);
            char[] password = KEY.toCharArray();

            store.load(null, password);

            KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", SECURITY_PROVIDER);
            keyPairGenerator.initialize(2048);
            KeyPair pair = keyPairGenerator.generateKeyPair();

            X500Name issuer = new X500Name("CN=" …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle executable-jar

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

如何生成有效的ECDSA EC密钥对?

我正在尝试使用Android中的SpongyCastle生成ECDSA密钥对。这是代码:

static {
    Security.insertProviderAt(new org.spongycastle.jce.provider.BouncyCastleProvider(), 1);
}

public static KeyPair generate() {
        ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("prime256v1");
        KeyPairGenerator generator = KeyPairGenerator.getInstance("ECDSA", "SC");
        generator.initialize(ecSpec, new SecureRandom());
        KeyPair keyPair = g.generateKeyPair();
        Log.i(TAG, "EC Pub Key generated: " + utils.bytesToHex(keyPair.getPublic().getEncoded()));
        Log.i(TAG, "EC Private Key generated: " + utils.bytesToHex(keyPair.getPrivate().getEncoded()));            
       return generator.generateKeyPair();
}
Run Code Online (Sandbox Code Playgroud)

出现错误是因为我总是得到类似公钥的示例:

3059301306072A8648CE3D020106082A8648CE3D03010703420004483ABA9F322240010ECF00E818C041A60FE71A2BD64C64CD5A60519985F110AEDE6308027D2730303F5E2478F083C7F5BB683DCAC22BFEB62F3A48BD01009F40

和私钥:

308193020100301306072A8648CE3D020106082A8648CE3D030107047930770201010420219AB4B3701630973A4B2917D53F69A4BE6DAD61F48016BFEF147B2999575CB2A00A06082A8648CE3D030107A14403420004483ABA9F322240010ECF00E818C041A60FE71A2BD64C64CD5A60519985F110AEDE6308027D2730303F5E2478F083C7F5BB683DCAC22BFEB62F3A48BD01009F40

站点ECDSA样本给了我“无效的ECDSA签名消息”,它们似乎与那个较小的私有密钥有很大不同,并且总是以在同一站点中生成的“ 04”公共密钥开头。

另外,我的后端验证给我错误“无效点编码0x30”

后端Java方法检查为:

public ECPublicKey getPublicKeyFromHex(String publicKeyHex)
        throws NoSuchAlgorithmException, DecoderException, ApplicationGenericException {
    byte[] rawPublicKey = Hex.decodeHex(publicKeyHex.toCharArray());
    ECPublicKey ecPublicKey = null;
    KeyFactory kf = null;

    ECNamedCurveParameterSpec ecNamedCurveParameterSpec …
Run Code Online (Sandbox Code Playgroud)

bouncycastle elliptic-curve dsa ecdsa spongycastle

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

从ECPrivateKey生成ECPublicKey

我正在尝试使用私钥和已知曲线生成公钥.以下是我的代码:

// Generate Keys
ECGenParameterSpec ecGenSpec = new ECGenParameterSpec("secp256r1");
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("ECDSA", "BC");
keyPairGenerator.initialize(ecGenSpec, new SecureRandom());
java.security.KeyPair pair = keyPairGenerator.generateKeyPair();
ECPrivateKey privateKey = (ECPrivateKey) pair.getPrivate();
ECPublicKey publicKeyExpected = (ECPublicKey) pair.getPublic();

// Expected public key
System.out.print("Expected Public Key: " +
        BaseEncoding.base64Url().encode(publicKeyExpected.getEncoded()));

// Generate public key from private key
X9ECParameters ecp = SECNamedCurves.getByName("secp256r1");
ECDomainParameters domainParams = new ECDomainParameters(ecp.getCurve(),
        ecp.getG(), ecp.getN(), ecp.getH(),
        ecp.getSeed());
ECPoint Q = domainParams.getG().multiply(privateKey.getS()); // is this correct?
KeyFactory kf = KeyFactory.getInstance("ECDSA", "BC");
ECPublicKey publicKeyGenerated =
        (ECPublicKey) kf.generatePublic(new X509EncodedKeySpec(Q.getEncoded(false))); …
Run Code Online (Sandbox Code Playgroud)

java security cryptography bouncycastle public-key

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

Bouncycastle CMSException

当数据格式正确时,为什么会引发bouncycastle异常。

@SuppressWarnings({ "rawtypes", "deprecation"}) 
     public static boolean verifySign(String base64Data, String base64SignedData)
                 throws Exception {
         /* to add BouncyCastleProvider */
           Security.addProvider(new BouncyCastleProvider());
           /* to add BouncyCastleProvider end */
           boolean verifiedStatus = false; 
           CMSSignedData cmsSignedData = null;
           X509Certificate cert = null;
        //   LOGGER.info("Entering verifySign at {}", System.currentTimeMillis());
           System.out.println("Entering verifySign at {}"+System.currentTimeMillis());  
           try { 
                // LOGGER.debug("base64Data and base64SignedData {} ", base64Data,    base64SignedData);
                 System.out.println("base64Data {}="+base64Data);
                 System.out.println(" base64SignedData{}="+ base64SignedData);   
                 byte[] signedBytes = Base64.decodeBase64(base64SignedData);
     cmsSignedData = new CMSSignedData(  new CMSProcessableByteArray(base64Data.getBytes()),signedBytes);

                 CertStore certStore = cmsSignedData.getCertificatesAndCRLs("Collection", "BC");
                 Collection …
Run Code Online (Sandbox Code Playgroud)

java bouncycastle

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