OpenSSL VPN Serveurs de messagerie |
OpenSSL/Rsa-java-opensslOpenSSL.Rsa-java-openssl HistoryHide minor edits - Show changes to output Added lines 1-3:
!! Pour chiffrer Deleted lines 104-105:
Added lines 120-222:
!! Pour Signer (:source lang=JAVA :) import java.security.*; import java.security.spec.*; import org.apache.commons.codec.binary.Base64; public final class RSAUtilsSign { static public String PVK= "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ+kB8MpkFt6YO84"+ "ZEu7ggnk6ECOhzeDL6rqg421nGqrzx37NeyhSZ/n0x+II91GBNMCuKH/x5VToPUG"+ "VG4i43ViBbEJFzsAyt0IGzU+fJkEkmTV/B6N9lPBwZvoyQPdnpRprn0PtbME4zMp"+ "sPIb/tFmrVRIyZKkl6zDvIB3acflAgMBAAECgYBYXd7iG/7JdEt1/7wc47VOrsQV"+ "ABA/HUHklR2u8ombznC+gtDNpFXxysxl1uErWdfPyeDT45bhxMIC/7b6pBtNfbhM"+ "Ig1Ej5ipD2Vr6+L5llHJZnYBFskFeCDcwdpV2/jlcz7h72YS5fOtcuUkA7UZ3Orz"+ "uiCY3Z3Qd5HhnRaGwQJBANHEZwWCilWHvfAPj1jr7tMF3fP/pJyoHDdwkj9YgCR5"+ "Hvhsx7b0UekTXUPMBUrFMORintSjKyx7ZUuu3ig4wnUCQQDC012+DBZJvha+zTii"+ "SUK5d7J4j8iOlkWzx7EZ015QGa9dHTr+YsJt0KTtQBXqz/J7EvLIrmkBjRwmyqZC"+ "6WGxAkA7p81cpclNlbMQqHwt37slzE9Y6uUXoD+WDK+q0DJxLPj/0X/iqgz5agZm"+ "F4mRwA6thNaCxnyqw9UE9xA7BBlZAkEAqXiTIq4A9USVJIP/r6tqj0q/xH/ORboS"+ "B8C9HWnvsF2nXaf/mSjvV/cWgAovBoK8urJQ3qBYVzEYO+YrmijJAQJAQrQBk7Bm"+ "mGWza8dn1SNATtmNXnSHOk1vWBQlnCZDla9BfpGLOhACRUttoTJObmrTdmRyr+h+"+ "MJpMBgE3IYK5Hg=="; static public String PUB= "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCfpAfDKZBbemDvOGRLu4IJ5OhA"+ "joc3gy+q6oONtZxqq88d+zXsoUmf59MfiCPdRgTTArih/8eVU6D1BlRuIuN1YgWx"+ "CRc7AMrdCBs1PnyZBJJk1fwejfZTwcGb6MkD3Z6Uaa59D7WzBOMzKbDyG/7RZq1U"+ "SMmSpJesw7yAd2nH5QIDAQAB"; public static void main(String[] args) { System.out.println("input:\n" + TextStream); boolean check; Base64 base64 = new Base64(); System.out.println("input: " + TextStream); byte[] Sign = sign(TextStream); System.out.println("Signature:\n" + base64.encodeToString(Sign)); check = verify(TextStream,Sign); System.out.println("check:\n" + check); } private static byte[] sign(String Buffer) { try { KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(PVK)); PrivateKey encryptionKey = keyFactory.generatePrivate(privSpec); Signature instance = Signature.getInstance("SHA1withRSA"); instance.initSign(encryptionKey); instance.update((Buffer).getBytes()); byte[] signature = instance.sign(); return signature; } catch (Exception e) { e.printStackTrace(); } return null; } private static boolean verify(String buffer,byte[] passwordCrypte) { try { KeyFactory keyFactory = KeyFactory.getInstance("RSA"); X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(Base64.decodeBase64(PUB)); PublicKey decryptionKey = keyFactory.generatePublic(pubSpec); Signature instance = Signature.getInstance("SHA1withRSA"); instance.initVerify(decryptionKey); instance.update(buffer.getBytes()); return instance.verify(passwordCrypte) ? true : false; } catch (Exception e) { e.printStackTrace(); } return false; } } (:sourcend:) %left bgcolor=#f0f0f0' padding=5px%@@'''C:\>javac RSAUtilsSign.java'''@@ \\ @@'''C:\>java RSAUtilsSign'''@@\\ @@input:@@\\ @@this is the input text@@\\ @@Signature:@@\\ @@l/mQPS04XmwMtqaBr0d46MJYMIDHUPeRzl8uXdDgrf9aXubFKu+UwlqES0NGs9QgrNS32RGtolUB@@\\ @@BN3LZtTshyrsi7RjY0bStrLdn0fLNVk14NONjGJio6NM5dPeJCNeW4u1QtPH9YnHznd2kR6LOQuZ@@\\ @@MowGQhvclB/WK68d4XY=@@\\ \\ @@check:@@\\ @@true@@\\ Added lines 1-119:
%left bgcolor=#f0f0f0' padding=5px%@@'''C:\>openssl genrsa -out privateKey.pem 1024'''\\ Loading 'screen' into random state - done\\ Generating RSA private key, 1024 bit long modulus\\ ...................++++++\\ ....................++++++\\ e is 65537 (0x10001)\\ \\ '''C:\>openssl rsa -in privateKey.pem -out publicKey.key -pubout -outform der'''\\ writing RSA key\\ \\ '''C:\>openssl pkcs8 -in privateKey.pem -out privateKey.p8 -outform der -nocrypt -topk8'''@@ Les fichiers privateKey.p8 et publicKey.key transformés en Base64 deviennent respectivement les variables PVK et PUB du code ci-dessous. (:source lang=JAVA :) import java.security.*; import java.security.spec.*; import javax.crypto.Cipher; import org.apache.commons.codec.binary.Base64; public final class RSAUtilsCipher { static public String PVK= "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ+kB8MpkFt6YO84"+ "ZEu7ggnk6ECOhzeDL6rqg421nGqrzx37NeyhSZ/n0x+II91GBNMCuKH/x5VToPUG"+ "VG4i43ViBbEJFzsAyt0IGzU+fJkEkmTV/B6N9lPBwZvoyQPdnpRprn0PtbME4zMp"+ "sPIb/tFmrVRIyZKkl6zDvIB3acflAgMBAAECgYBYXd7iG/7JdEt1/7wc47VOrsQV"+ "ABA/HUHklR2u8ombznC+gtDNpFXxysxl1uErWdfPyeDT45bhxMIC/7b6pBtNfbhM"+ "Ig1Ej5ipD2Vr6+L5llHJZnYBFskFeCDcwdpV2/jlcz7h72YS5fOtcuUkA7UZ3Orz"+ "uiCY3Z3Qd5HhnRaGwQJBANHEZwWCilWHvfAPj1jr7tMF3fP/pJyoHDdwkj9YgCR5"+ "Hvhsx7b0UekTXUPMBUrFMORintSjKyx7ZUuu3ig4wnUCQQDC012+DBZJvha+zTii"+ "SUK5d7J4j8iOlkWzx7EZ015QGa9dHTr+YsJt0KTtQBXqz/J7EvLIrmkBjRwmyqZC"+ "6WGxAkA7p81cpclNlbMQqHwt37slzE9Y6uUXoD+WDK+q0DJxLPj/0X/iqgz5agZm"+ "F4mRwA6thNaCxnyqw9UE9xA7BBlZAkEAqXiTIq4A9USVJIP/r6tqj0q/xH/ORboS"+ "B8C9HWnvsF2nXaf/mSjvV/cWgAovBoK8urJQ3qBYVzEYO+YrmijJAQJAQrQBk7Bm"+ "mGWza8dn1SNATtmNXnSHOk1vWBQlnCZDla9BfpGLOhACRUttoTJObmrTdmRyr+h+"+ "MJpMBgE3IYK5Hg=="; static public String PUB= "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCfpAfDKZBbemDvOGRLu4IJ5OhA"+ "joc3gy+q6oONtZxqq88d+zXsoUmf59MfiCPdRgTTArih/8eVU6D1BlRuIuN1YgWx"+ "CRc7AMrdCBs1PnyZBJJk1fwejfZTwcGb6MkD3Z6Uaa59D7WzBOMzKbDyG/7RZq1U"+ "SMmSpJesw7yAd2nH5QIDAQAB"; public static void main(String[] args) { String TextStream = "this is the input text"; byte[] Cipher; Base64 base64 = new Base64(); System.out.println("input:\n" + TextStream); Cipher = encrypt(TextStream); System.out.println("cipher:\n" + base64.encodeToString(Cipher)); System.out.println("decrypt:\n" + decrypt(Cipher)); } private static byte[] encrypt(String Buffer) { try { KeyFactory keyFactory = KeyFactory.getInstance("RSA"); X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(Base64.decodeBase64(PUB)); Key encryptionKey = keyFactory.generatePublic(pubSpec); //PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(PVK)); //Key encryptionKey = keyFactory.generatePrivate(privSpec); Cipher rsa; rsa = Cipher.getInstance("RSA"); rsa.init(Cipher.ENCRYPT_MODE, encryptionKey); return rsa.doFinal(Buffer.getBytes()); } catch (Exception e) { e.printStackTrace(); } return null; } private static String decrypt(byte[] buffer) { try { KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(PVK)); Key decryptionKey = keyFactory.generatePrivate(privSpec); //X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(Base64.decodeBase64(PUB)); //Key decryptionKey = keyFactory.generatePublic(pubSpec); Cipher rsa; rsa = Cipher.getInstance("RSA"); rsa.init(Cipher.DECRYPT_MODE, decryptionKey); byte[] utf8 = rsa.doFinal(buffer); return new String(utf8, "UTF8"); } catch (Exception e) { e.printStackTrace(); } return null; } } (:sourcend:) %left bgcolor=#f0f0f0' padding=5px%@@'''C:\>javac RSAUtilsCipher.java'''@@ \\ @@'''C:\>java RSAUtilsCipher'''@@\\ @@input:@@\\ @@this is the input text@@\\ @@cipher:@@\\ @@Rk0Ihq0Ks6P46EIWrTCuL5SV1iq31Nnml7ovNAgKskQolvo7P35AVFMo6fDcvrguGg+aDOprCsjf@@\\ @@gZbvIstxRGl1xROHJc6IVu0tufSRrGv3H57hOyk/E4em6j3l5WV300GIL81ygek8csGRx3LGZyt1@@\\ @@4kp09p1uSoPkLtEwomU=@@\\ \\ @@decrypt:@@\\ @@this is the input text@@\\ |