Advertisement
Guest User

Untitled

a guest
Jun 8th, 2018
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.47 KB | None | 0 0
  1. package one.video.streaming.oktp;
  2.  
  3. import java.math.BigInteger;
  4. import java.security.InvalidAlgorithmParameterException;
  5. import java.security.KeyFactory;
  6. import java.security.KeyPair;
  7. import java.security.KeyPairGenerator;
  8. import java.security.NoSuchAlgorithmException;
  9. import javax.crypto.KeyAgreement;
  10. import javax.crypto.spec.DHParameterSpec;
  11. import javax.crypto.spec.DHPublicKeySpec;
  12.  
  13. public class DHCrypt {
  14.     private final KeyPair _keyPair;
  15.     private byte[] _sharedKey;
  16.     private byte[] _peerKey;
  17.     private static final BigInteger _prime;
  18.     private static final BigInteger _generator;
  19.  
  20.     static {
  21.         DHCrypt._prime = new BigInteger("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF", 16);
  22.         DHCrypt._generator = new BigInteger("2");
  23.     }
  24.  
  25.     DHCrypt() {
  26.         super();
  27.         try {
  28.             KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
  29.             keyGen.initialize(new DHParameterSpec(DHCrypt._prime, DHCrypt._generator));
  30.             this._keyPair = keyGen.generateKeyPair();
  31.             return;
  32.         }
  33.         catch(NoSuchAlgorithmException v0) {
  34.         }
  35.         catch(InvalidAlgorithmParameterException v0_1) {
  36.         }
  37.  
  38.         throw new RuntimeException(((Throwable)v0_1));
  39.     }
  40.  
  41.     public byte[] publicKey() {
  42.         return this._keyPair.getPublic().getY().toByteArray();
  43.     }
  44.  
  45.     public void computeSharedKey(byte[] peerKey) {
  46.         this._peerKey = peerKey;
  47.         try {
  48.             KeyAgreement key = KeyAgreement.getInstance("DH");
  49.             key.init(this._keyPair.getPrivate());
  50.             key.doPhase(KeyFactory.getInstance("DH").generatePublic(new DHPublicKeySpec(new BigInteger(1, peerKey), DHCrypt._prime, DHCrypt._generator)), true);
  51.             this._sharedKey = key.generateSecret();
  52.         }
  53.         catch(Exception e) {
  54.             e.printStackTrace();
  55.         }
  56.     }
  57.  
  58.     public byte[] sharedKey() {
  59.         return this._sharedKey;
  60.     }
  61.  
  62.     public byte[] peerKey() {
  63.         return this._peerKey;
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement