Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.43 KB | None | 0 0
  1. package eu.apksoft.android.banka.test.obsolete;
  2.  
  3. import java.math.BigInteger;
  4. import java.security.InvalidKeyException;
  5. import java.security.KeyFactory;
  6. import java.security.MessageDigest;
  7. import java.security.NoSuchAlgorithmException;
  8. import java.security.PrivateKey;
  9. import java.security.PublicKey;
  10. import java.security.Signature;
  11. import java.security.SignatureException;
  12. import java.security.spec.InvalidKeySpecException;
  13. import java.security.spec.RSAPrivateKeySpec;
  14. import java.security.spec.RSAPublicKeySpec;
  15.  
  16. import sun.security.rsa.RSAPrivateKeyImpl;
  17. import sun.security.rsa.RSAPublicKeyImpl;
  18.  
  19. public class Signing {
  20.     public static void main(String[] args) {
  21.         byte data[] = "Hello Brmlab transaction: 000000-2258389083/800;-1000000".getBytes();
  22.        
  23.         try {
  24.             MessageDigest digest = MessageDigest.getInstance("SHA1");
  25.             digest.reset();
  26.             digest.update(data);
  27.             byte[] hash = digest.digest();
  28.  
  29.             BigInteger modulus = new BigInteger("b754d4de025691740c07e206d5fd8bf2b1803fa318d81bbbf897ed48356b11ee0e4e31d9eabdda5ba7c061572e083e99961e9a99e6c0b564365180cda41ee6aaa5bdcf4dc46205a2de72150c916473d6bfc75c996410d094612d87a2be31e7a79d33e3e06cda59017193a09d424eca7463de44fd5c60b6a58125e88ef418d015", 16);
  30.             BigInteger pubExponent = new BigInteger("10001", 16);
  31.                
  32.             BigInteger privExponent = new BigInteger("25ebd22c29e7a6268ee682864f7526a188bdb26c16137d89201eace226ca82e6eee695c131a11bada1c1556127106582775ed533c85b4c29f262617627e08c6d9de91ad92ca2197ce87f9546418b1353c01ed23f0e2d5fdec95b7f57f9476e10d5b6b087e39876b5e24ceb4cd902d7cbd137a59b17b3552c2284d4c5e2aeab01", 16);
  33.              
  34.             RSAPrivateKeySpec privateKeySpec = new RSAPrivateKeySpec(modulus, privExponent);
  35.             RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec(modulus, pubExponent);
  36.            
  37.  
  38.            
  39.             KeyFactory keyFactory = KeyFactory.getInstance("RSA");
  40.             PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec);
  41.             PublicKey publicKey = keyFactory.generatePublic(publicKeySpec);
  42.  
  43.            
  44.             System.out.println(privateKey.getClass());
  45.             RSAPrivateKeyImpl pri = (RSAPrivateKeyImpl)privateKey;
  46.             RSAPublicKeyImpl pub = (RSAPublicKeyImpl)publicKey;
  47.             System.out.println("Private key: " + convertToHex(pri.encode()));
  48.             System.out.println("Public key: " + convertToHex(pub.encode()));
  49.            
  50.             //sign
  51.             Signature signature = Signature.getInstance("SHA1withRSA");
  52.             signature.initSign(privateKey);
  53.             signature.update(hash);
  54.             byte[] signed_result =  signature.sign();
  55.            
  56.             //verify signature
  57.             signature = Signature.getInstance("SHA1withRSA");
  58.             signature.initVerify(publicKey);
  59.             signature.update(hash);
  60.            
  61.             boolean testResult = signature.verify(signed_result);
  62.             System.out.println("TEST result: "+ testResult);
  63.            
  64.            
  65.            
  66.         } catch (InvalidKeyException e) {
  67.             e.printStackTrace();
  68.         } catch (NoSuchAlgorithmException e) {
  69.             e.printStackTrace();
  70.         } catch (SignatureException e) {
  71.             e.printStackTrace();
  72.         } catch (InvalidKeySpecException e) {
  73.             e.printStackTrace();
  74.         }
  75.     }
  76.    
  77.    
  78.     private static String convertToHex(byte[] data) {
  79.         StringBuffer buf = new StringBuffer();
  80.         for (int i = 0; i < data.length; ++i) {
  81.             int halfbyte = data[i] >>> 4 & 0xF;
  82.             int two_halfs = 0;
  83.             do {
  84.                 if ((0 <= halfbyte) && (halfbyte <= 9))
  85.                     buf.append((char) (48 + halfbyte));
  86.                 else
  87.                     buf.append((char) (97 + (halfbyte - 10)));
  88.                 halfbyte = data[i] & 0xF;
  89.             } while (two_halfs++ < 1);
  90.         }
  91.         return buf.toString();
  92.     }
  93.  
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement