2013-12-13 4 views
2

Я пытаюсь подписать данные с помощью Blackberry криптографии, но генерироваться подпись не получает проверить на стороне сервера (PHP)Как подписывать данные с использованием ежевики криптографии

Я попытался это -

RSACryptoSystem rsaCryptoSystem = new RSACryptoSystem(1024); 
    // Create an RSA key pair. 
    RSAKeyPair rsaKeyPair = new RSAKeyPair(rsaCryptoSystem); 

    // Create the necessary RSA key pair for signing and verifying. 
    RSACryptoSystem cryptoSystem = new RSACryptoSystem(1024); 
    RSAKeyPair keyPair = new RSAKeyPair(cryptoSystem); 

    // Create the digest and the salt value. 
    SHA1Digest digest = new SHA1Digest(); 
    byte[] salt = RandomSource.getBytes(digest.getDigestLength()); 

    // Create the RSASignatureSigner passing in a digest algorithm 
    // and PSS signature formatter. 
    PSSSignatureSigner signer = 
      new PSSSignatureSigner(rsaKeyPair.getRSAPrivateKey(), digest, salt); 

    signer.update(stringToSign.getBytes()); 

    // Encode the signature using X509. 
    EncodedSignature encSignature = SignatureEncoder.encode(signer,"X509"); 
    String signedIdentifier = Base64.encode(encSignature.getEncodedSignature()); 

Пожалуйста, помогите

+0

то, что '' cryptoSystem' и keyPair' используется для? похоже, что вы просто создаете повторяющиеся переменные. – Nate

ответ

0

Изменить код

byte[] dataBytes = stringToSign.getBytes(); 
    PKCS1SignatureSigner signer = new PKCS1SignatureSigner(rsaKeyPair.getRSAPrivateKey()); 

    signer.update(dataBytes, 0, dataBytes.length); 
    byte[] signatureBytes = new byte[signer.getLength()]; 
    signer.sign(signatureBytes, 0); 
    String signedIdentifier = Base64.encode(signatureBytes); 
+0

Спасибо, что он отлично работает – user2682882