php aes加密解密_JAVA实现PHP的openssl_encrypt方法
导读:本文主要讨论如何通过 Java 方式实现 PHP 的 openssl_encrypt() 加密方法与 openssl_decrypt() 解密方法。本文例子加解密例子均采用 AES256 位 cbc 模式。
PHP利用openssl_encrypt实现数据的加密
openssl_encrypt 加密
- $data:将被加密的明文。
- $method:加解密方法,这里采用 AES-256-CBC,AES256位cbc模式的加密和解密
- $KEY:加密秘钥。
- $options :该值用于指定 openssl_encrypt() 数据返回格式。默认情况下返回Base64编码,当设置为 OPENSSL_RAW_DATA 时返回原数据。本文下面的Java实现将其默认为 0,(即返回Base64编码)。
- IV:要确保对 key 唯一。
上面的例子将字符串 "aaa" 通过 php 的 openssl_encrypt() 方法,采用 AES-256-CBC 加密方法加密进行加密。输出结果如下:
PHP利用openssl_decrypt实现数据的解密
openssl_decrypt 解密
上面例子将字符串 “/5kmWQpdiRumK21NRvmuww==” 通过 php 的 openssl_decrypt() 方法进行解密,输出结果如下:
使用 Java 实现 PHP 的 openssl_encrypt 和 openssl_decrypt实现数据的加解密
附上 Java 代码实现:
public class AesCbc256Util { private static final String ALGORITHM = "AES/CBC/PKCS5Padding"; private static final String KEY = "00000000000000000000000000000000"; private static final String IV = "1111111111111111"; //加密 public static String AES_cbc_encrypt(byte[] srcData, byte[] key, byte[] iv) throws Exception { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, keySpec, new IvParameterSpec(iv)); return Base64.getEncoder().encodeToString(cipher.doFinal(srcData)); } //解密 public static String AES_cbc_decrypt(byte[] encData, byte[] key, byte[] iv) throws Exception { SecretKeySpec keySpec = new SecretKeySpec(key, "AES"); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(iv)); return new String(cipher.doFinal(Base64.getDecoder().decode(encData))); } }
测试:
public static void main(String[] args) throws Exception { // 加密 String s = AES_cbc_encrypt("aaa".getBytes(), KEY.getBytes(), IV.getBytes()); System.out.println(s); //解密 String s2 = AES_cbc_decrypt("/5kmWQpdiRumK21NRvmuww==".getBytes(), KEY.getBytes(), IV.getBytes()); System.out.println(s2); }
输出结果:
Java 实现分析
- 指定采用 AES-256-CBC 方法
- 由于上文 PHP 的 $option 值设置为 0,默认情况下返回Base64编码。所以在编写 Java 实现时需要在加密最后进行 Base64编码, 同理解码时也需要进行处理。
最后
以上就是 Java 实现 PHP 的 openssl_encrypt() 加密方法与 openssl_decrypt() 解密方法的解决方案。
感谢您的阅读,如果喜欢本文欢迎关注和转发,本头条号将坚持持续分享IT技术知识。对于文章内容有其他想法或意见建议等,欢迎提出共同讨论共同进步。
php aes加密解密_JAVA实现PHP的openssl_encrypt方法相关推荐
- java aes128加密解密_java AES 128 位加密解密算法
最近在做app后台的服务器,使用到AES加密解密算法,无奈网上的都不符合要求,于是自己借鉴着写了一个AES加密解密工具. 密钥长度问题 默认 Java 中仅支持 128 位密钥,当使用 256 位密钥 ...
- java php aes加密解密_php aes 加密解密可与java对接
php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...
- android、ios、php之间AES加密解密
使用原因: 因为在项目中,需要在与客户端(IOS,Android)交互的时候,保存一些私有信息,不被别人看到,所以,使用了比较流行的可以反向加解密的AES. PHP 源码 <?php$aes = ...
- python 加密解密_python实现AES加密解密
本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原 ...
- AES加密解密算法Java实现
AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...
- openssl与cryptoAPI交互AES加密解密
原文: http://blog.csdn.net/zhouyuqwert/article/details/7422467 有读者指出代码贴两遍,修改下. 继上次只有CryptoAPI的加密后,这次要实 ...
- c php aes加密解密,php的AES加密解密
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. $privateKey = "1234567812345678"; $ ...
- 理解AES加密解密的使用方法
很多人对于AES加密并不是很了解,导致互相之间进行加密解密困难. 本文用简单的方式来介绍AES在使用上需要的知识,而不涉及内部算法.最后给出例子来帮助理解AES加密解密的使用方法. AES的麻烦 相比 ...
- C#中使用DES和AES加密解密
代码 using System; using System.Text; using System.Security.Cryptography; using System.IO; namespace M ...
最新文章
- python3线程中的锁机制
- 深度学习之三:深度学习基本思想
- SAP Marketing Engagement Management
- 第一张信用卡,该选哪家的?
- 一键将Python2代码自动转化为Python3
- c# 溢出抛异常_Rust竟然没有异常处理?
- java二维码生成-谷歌(Google.zxing)开源二维码生成学习及实例
- [Remoting]在.NET環境實作Flex 3 Remoting - (2) Flex Builder 環境設定
- python字符串对齐.format_python字符串格式化之.format
- python常用的十进制、16进制、字符串、字节串之间的转换
- ubuntu16.04 安装中文输入法
- 配置php apache,apache如何配置php
- java的本质_Java线程本质
- 计算机专业考研难么,计算机专业考研难吗
- LINUX 安装护眼软件
- 零基础如何入门学习电脑编程?
- 覃小龙课堂:小白如何影视剪辑月入10W,24小时全天带你
- TWaver使用中间点画折线方法
- Top 50 Most Popular APIs on RapidAPI (2018)
- CAD手机看图软件中怎么将CAD图纸转为PDF/图片格式?