ulvis.paste.net

Paste Search Dynamic
Recent pastes
key
  1. package mkri;
  2.  
  3. import java.math.BigInteger;
  4. import java.security.InvalidKeyException;
  5. import java.security.Key;
  6. import java.security.KeyFactory;
  7. import java.security.KeyPair;
  8. import java.security.KeyPairGenerator;
  9. import java.security.MessageDigest;
  10. import java.security.NoSuchAlgorithmException;
  11. import java.security.PrivateKey;
  12. import java.security.Provider;
  13. import java.security.PublicKey;
  14. import java.security.SecureRandom;
  15. import java.security.Signature;
  16. import java.security.SignatureException;
  17. import java.security.spec.InvalidKeySpecException;
  18. import java.security.spec.PKCS8EncodedKeySpec;
  19. import java.security.spec.X509EncodedKeySpec;
  20. import java.util.Base64;
  21. import java.util.Base64.*;
  22.  
  23. import javax.crypto.Cipher;
  24. import javax.crypto.KeyAgreement;
  25. import javax.crypto.NoSuchPaddingException;
  26. import javax.crypto.SecretKey;
  27. import javax.crypto.interfaces.DHPublicKey;
  28. import javax.crypto.spec.DHParameterSpec;
  29. import javax.crypto.spec.DHPublicKeySpec;
  30. import javax.crypto.spec.SecretKeySpec;
  31.  
  32. public class ProtocolSec {
  33.  
  34.     private signature sign;
  35.     private keypair keyPair;
  36.    
  37.     private KeyAgreement aKeyAgree;
  38.     private byte[] pass;
  39.    
  40.     private Decoder dec = Base64.getDecoder();
  41.     private Encoder enc = Base64.getEncoder();
  42.    
  43.  
  44.    
  45.     /**
  46.      * Generuje RSA
  47.      * @throws NoSuchAlgorithmException
  48.      * @throws InvalidKeyException
  49.      * @throws InvalidKeySpecException
  50.      * @throws SignatureException
  51.      */
  52.        
  53.         //--------------- Generovani a inicializace RSA algoritmu pro podpis, verze 2048 b, SHA512----
  54.        
  55.        
  56.  
  57.         keypairgenerator keyGen = keypairgenerator.getInstance("RSA");
  58.         keyGen.initialize(2048);
  59.        
  60.         keyPair = keyGen.generateKeyPair();
  61.        
  62.  
  63.         //byte[] publickoKey = keyPair.getPublic().getEncoded();
  64.  
  65.        // byte[] privatkoKey = keyPair.getPrivate().getEncoded();
  66.        
  67.        
  68.          //PrivateKey privateKey = KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(privatkoKey));
  69.         // PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(publickoKey));
  70.            
  71.         sign = signature.getInstance("SHA512withRSA");
  72.        
  73.         sign.initSign(keyPair.getPrivate());
  74.        
  75.        
  76.         //sign.initVerify(publicKey);
  77.        
  78.         //pass = sign.sign();
  79.        
  80.        
  81.        
  82.      /*  
  83.        // Key publicky = keyPair.getPublic();
  84.        // Key privatko = keyPair.getPrivate();
  85.        
  86.         //_____
  87.         byte[] publiccKey = keyGen.genKeyPair().getPublic().getEncoded();
  88.         StringBuffer retString = new StringBuffer();
  89.         retString.append("[");
  90.         for (int i = 0; i < publiccKey.length; ++i) {
  91.             retString.append(publiccKey[i]);
  92.             retString.append(", ");
  93.         }
  94.         retString = retString.delete(retString.length()-2,retString.length());
  95.         retString.append("]");
  96.         System.out.println(retString);
  97.  
  98.         //_____
  99. */    
  100.        
  101.        
  102.        
  103.        
  104.        
  105.        
  106.        
  107.    
  108.         //---------------------------------------------
  109.     }
  110.    
  111.     public string getPublicKey(){
  112.        
  113.         return enc.encodeToString(keyPair.getPublic().getEncoded());
  114.     }
  115.    
  116.     /**
  117.      * Podepisuje data
  118.      * Vstup i vystup kodovan v BASE64!
  119.      * @param data
  120.      * @return
  121.      * @throws SignatureException
  122.      */
  123.     public string sign(string data) throws signatureexception{
  124.        
  125.         //--------------- RSA podepsani, stup: data----
  126.         sign.update(dec.decode(data));
  127.         byte[] signature = sign.sign();
  128.         //---------------------------------------------
  129.         return enc.encodeToString(signature);
  130.     }
  131.    
  132.     /**
  133.      * generovani Diffie Hellman
  134.      * Vraci verejny klic v BASE64!
  135.      */
  136.     public string genDH() throws exception{
  137.        
  138.         byte[] pubA = null;
  139.         //--------------- Diffie helman, inicializace a vraceni verejneho klice----
  140.    
  141.         keypairgenerator keyGen = keypairgenerator.getInstance("DH");
  142.         aKeyAgree= KeyAgreement.getInstance("DH");
  143.         keypair aPair = keyGen.generateKeyPair();
  144.         aKeyAgree.init(aPair.getPrivate());
  145.         aKeyAgree.doPhase(keyPair.getPublic(),true);
  146.         pubA = aKeyAgree.generateSecret();
  147.        
  148.         ///?????????????????
  149.        
  150.         //-------------------------------------------------------------------------
  151.        return enc.encodeToString(pubA);
  152.     }
  153.    
  154.     /**
  155.      * inicializuje algoritmus DH klicem PK protistrany,
  156.      * vypocte sdilene tajemstvi
  157.      * vzpocte hash a vrati jej
  158.      * Vstup kodovan BASE64!
  159.      * @param pk
  160.      * @throws Exception
  161.      */
  162.     public void procDH(string pk) throws exception {
  163.        
  164.        
  165.         byte[] bpk = dec.decode(pk.getBytes());
  166.         //--------------- Diffie Hellman , hash SHA1 -----------------------
  167.        
  168.  
  169.         messagedigest hash = null;
  170.         pass = hash.digest(hash.digest(aKeyAgree.generateSecret()));
  171.         //Hash ulozit do pass - pouziva se na sifrovani
  172.         //-------------------------------------------------------------------
  173.     }
  174.    
  175.     /**
  176.      * Sifrování, vstup není kódován BASE64!
  177.      * Výstup kódován BASE64!
  178.      * @param data
  179.      * @return
  180.      * @throws Exception
  181.      */
  182.     public string encrypt(string data) throws exception{
  183.        
  184.         byte[] encAes = null;
  185.        
  186.         //--------------- inicializace, sifrovani AES-128, mod ECB, padding PKCS5Padding----
  187.        
  188.        
  189.        
  190.         Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
  191.         SecretKeySpec secretKey = new SecretKeySpec(keyPair.getPrivate().getEncoded(), "AES");
  192.         cipher.init(Cipher.ENCRYPT_MODE, secretKey);
  193.         encAes = cipher.doFinal(data.getBytes("UTF8"));
  194.        
  195.        
  196.        
  197.         //-------------------------------------------------------------------
  198.         return enc.encodeToString(encAes);
  199.     }
  200.    
  201.     /**
  202.      * Desifrování, vstup je kódován BASE64!
  203.      * Výstup kódován BASE64!
  204.      * @param data
  205.      * @return
  206.      * @throws Exception
  207.      */
  208.     public string decrypt(string data) throws exception{
  209.        
  210.         byte[] decAes = null;
  211.         //--------------- inicializace, desifrovani AES-128, mod ECB, padding PKCS5Padding---
  212.        
  213.         Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
  214.         SecretKeySpec secretKey = new SecretKeySpec(keyPair.getPublic().getEncoded(), "AES");
  215.         cipher.init(Cipher.DECRYPT_MODE, secretKey);
  216.         decAes = Base64.getDecoder().decode(data.getBytes("UTF8"));
  217.        
  218.        
  219.         //-------------------------------------------------------------------
  220.         return new string(decAes);
  221.     }
  222.  
  223.  
  224.  
  225. }
Parsed in 0.105 seconds