当前位置:首页 » 编程语言 » rsaphpjava

rsaphpjava

发布时间: 2023-07-23 01:14:24

java rsa私钥加密

java rsa私钥加密是什么?让我们一起来了解一下吧!

java rsa私钥加密是一种加密算法。私钥加密算法是用私钥来进行加密与解密信息。私钥加密也被称作对称加密,原因是加密与解密使用的秘钥是同一个。

RSA加密需要注意的事项如下:

1. 首先产生公钥与私钥

2. 设计加密与解密的算法

3. 私钥加密的数据信息只能由公钥可以解密

4. 公钥加密的数据信息只能由私钥可以解密

实战演练,具体步骤如下: public class RsaCryptTools {     private static final String CHARSET = "utf-8";     private static final Base64.Decoder decoder64 = Base64.getDecoder();     private static final Base64.Encoder encoder64 = Base64.getEncoder();       /**      * 生成公私钥      * @param keySize      * @return      * @throws NoSuchAlgorithmException      */     public static SecretKey generateSecretKey(int keySize) throws NoSuchAlgorithmException {         //生成密钥对         KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");         keyGen.initialize(keySize, new SecureRandom());         KeyPair pair = keyGen.generateKeyPair();         PrivateKey privateKey = pair.getPrivate();         PublicKey publicKey = pair.getPublic();         //这里可以将密钥对保存到本地         return new SecretKey(encoder64.encodeToString(publicKey.getEncoded()), encoder64.encodeToString(privateKey.getEncoded()));     }     /**      * 私钥加密      * @param data      * @param privateInfoStr      * @return      * @throws IOException      * @throws InvalidCipherTextException      */     public static String encryptData(String data, String privateInfoStr) throws IOException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, BadPaddingException, IllegalBlockSizeException {           Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");         cipher.init(Cipher.ENCRYPT_MODE, getPrivateKey(privateInfoStr));         return encoder64.encodeToString(cipher.doFinal(data.getBytes(CHARSET)));     }       /**      * 公钥解密      * @param data      * @param publicInfoStr      * @return      */     public static String decryptData(String data, String publicInfoStr) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException {         byte[] encryptDataBytes=decoder64.decode(data.getBytes(CHARSET));         //解密         Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");         cipher.init(Cipher.DECRYPT_MODE, getPublicKey(publicInfoStr));         return new String(cipher.doFinal(encryptDataBytes), CHARSET);     }     private static PublicKey getPublicKey(String base64PublicKey) throws NoSuchAlgorithmException, InvalidKeySpecException {         X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(base64PublicKey.getBytes()));         KeyFactory keyFactory = KeyFactory.getInstance("RSA");         return keyFactory.generatePublic(keySpec);     }     private static PrivateKey getPrivateKey(String base64PrivateKey) throws NoSuchAlgorithmException, InvalidKeySpecException {         PrivateKey privateKey = null;         PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(base64PrivateKey.getBytes()));         KeyFactory keyFactory = null;         keyFactory = KeyFactory.getInstance("RSA");         privateKey = keyFactory.generatePrivate(keySpec);         return privateKey;     }       /**      * 密钥实体      * @author hank      * @since 2020/2/28 0028 下午 16:27      */     public static class SecretKey {         /**          * 公钥          */         private String publicKey;         /**          * 私钥          */         private String privateKey;           public SecretKey(String publicKey, String privateKey) {             this.publicKey = publicKey;             this.privateKey = privateKey;         }           public String getPublicKey() {             return publicKey;         }           public void setPublicKey(String publicKey) {             this.publicKey = publicKey;         }           public String getPrivateKey() {             return privateKey;         }           public void setPrivateKey(String privateKey) {             this.privateKey = privateKey;         }           @Override         public String toString() {             return "SecretKey{" +                     "publicKey='" + publicKey + '\'' +                     ", privateKey='" + privateKey + '\'' +                     '}';         }     }       private static void writeToFile(String path, byte[] key) throws IOException {         File f = new File(path);         f.getParentFile().mkdirs();           try(FileOutputStream fos = new FileOutputStream(f)) {             fos.write(key);             fos.flush();         }     }       public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, IOException, BadPaddingException, IllegalBlockSizeException, InvalidKeyException, InvalidKeySpecException {         SecretKey secretKey = generateSecretKey(2048);         System.out.println(secretKey);         String enStr = encryptData("你好测试测试", secretKey.getPrivateKey());         System.out.println(enStr);         String deStr = decryptData(enStr, secretKey.getPublicKey());         System.out.println(deStr);         enStr = encryptData("你好测试测试hello", secretKey.getPrivateKey());         System.out.println(enStr);         deStr = decryptData(enStr, secretKey.getPublicKey());         System.out.println(deStr);     }   }

php跟java有什么区别

PHP和Java是两种完全不同的编程语言,它们有以下几个区别:

  • 语法和编程范式:PHP是一种脚本语言,其语法类似于C语言,主要用于Web开发。而Java是一种面向对象的编程语言,其语法类似于C++,主闷乎誉要用于构建大型应用程序和服务端开发。PHP是一种解顷悄释性语言,而Java则是一蚂段种编译型语言。

  • 执行效率:由于PHP是解释型语言,它的执行速度比Java慢。而Java则是编译型语言,它的执行速度比PHP快。

  • 应用场景:PHP主要用于Web开发,如网站开发、动态网页制作等。而Java则被广泛应用于构建大型应用程序和服务端开发,如企业应用、桌面应用、移动应用等。

  • 社区和生态环境:PHP拥有庞大的开发者社区和丰富的开源项目,如WordPress、Drupal等。而Java则拥有完善的开发工具、框架和中间件,如Spring、Hibernate、Tomcat等。

  • 学习门槛和学习曲线:由于PHP语法简单、易于学习,所以初学者能够较快地上手。而Java则比较复杂,需要掌握更多的知识和技能,学习曲线较为陡峭。

  • 总的来说,PHP和Java是针对不同应用场景和需求的编程语言,开发者应根据实际需求来选择适合自己的编程语言。

③ java加密用PHP解密

先看用什么方式的加密,拿AES来说,你需要问java要到混淆值、初始化向量与AES加密的方式如AES-192-CFB.然后直接调用openssl_decrypt方法进行解密.

openssl_decrypt('需要解密的字符串','AES-192-CFB','混淆值',0,'初始化向量'),true)

④ RSA的PHP服务器端之间问题,怎么解决

1 ) 如果存在从phpseclib访问 mod &的方法,那么问题将在更少的时间内被解决。
2 ) 在java中替换本机密码类,它的中第三方像 Bouncy Castle 那样的public 密钥是一个参数。
3 ) 将服务器端语言更改为 JSP 然后,可以在两边使用相同的类。

⑤ php对接java接口RSA签名及验签问题!

php的胡旅PKCS1方式;java要也要改旁信成此种方式

php的裤启凳PKCS8方式;java不用改

热点内容
夸克编程 发布:2025-02-07 21:43:43 浏览:528
电源450适合哪些配置 发布:2025-02-07 21:25:24 浏览:430
微信密码一般要多少位以上 发布:2025-02-07 21:24:19 浏览:878
sqldecimal转换 发布:2025-02-07 21:17:50 浏览:659
钢管查询源码 发布:2025-02-07 21:15:25 浏览:426
滨州服务器租赁地址 发布:2025-02-07 21:13:41 浏览:438
thinkphp删除数据库数据 发布:2025-02-07 21:12:03 浏览:945
安卓智能手机哪个更便宜 发布:2025-02-07 21:10:24 浏览:144
织梦数据库连接 发布:2025-02-07 21:09:32 浏览:353
缓解情绪解压的句子 发布:2025-02-07 21:04:23 浏览:535