- 浏览: 807047 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xieye:
jetty插件有好几个版本,1.6,1.7,1.8
我选的是用 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
还有,
注:第2部分时,需要先安装jetty,我自己在安装过程 ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
说明一下:实际使用中,导入时我并没有错误。2、我把eclips ...
tapestry入门(翻译)3 导入项目到eclipse -
xieye:
其实还是有一些先决条件的。1是外部环境,2是进步是阶段性的(意 ...
(转载文章)如何愉悦起来:一位精神治疗师的见解 -
mandy_yanzi:
我都已经饿7天了坚持为了我的衣衣
身体健康的问题
代码主要来源如下,但是注意做了修改:
https://gist.github.com/thomasdarimont/fae409eaae2abcf83bd6633b961e7f00
这是aes加密解密互通的代码,php和java的,一种语言加密,另一种可以解密。
修改的地方:省略了向量的输入,太麻烦。读者可自行修改此代码,使得加密更加健壮。
php代码:
java代码
https://gist.github.com/thomasdarimont/fae409eaae2abcf83bd6633b961e7f00
这是aes加密解密互通的代码,php和java的,一种语言加密,另一种可以解密。
修改的地方:省略了向量的输入,太麻烦。读者可自行修改此代码,使得加密更加健壮。
php代码:
class AesCipher { private const OPENSSL_CIPHER_NAME = "aes-128-cbc"; private const CIPHER_KEY_LEN = 16; //128 bits private static function fixKey( $key ) { if ( strlen( $key ) < AesCipher::CIPHER_KEY_LEN ) { //0 pad to len 16 return str_pad( "$key", AesCipher::CIPHER_KEY_LEN, "0" ); } if ( strlen( $key ) > AesCipher::CIPHER_KEY_LEN ) { //truncate to 16 bytes return substr( $key, 0, AesCipher::CIPHER_KEY_LEN ); } return $key; } /** * Encrypt data using AES Cipher (CBC) with 128 bit key * * @param type $key - key to use should be 16 bytes long (128 bits) * @param type $data - data to encrypt * @return encrypted data in base64 encoding with iv attached at end after a : */ public static function encrypt( $key, $data ) { $iv = substr( $key, 0, 5 ); $iv = str_pad( $iv, 16, '0' ); $encodedEncryptedData = base64_encode( openssl_encrypt( $data, AesCipher::OPENSSL_CIPHER_NAME, AesCipher::fixKey( $key ), OPENSSL_RAW_DATA, $iv ) ); $encodedIV = base64_encode( $iv ); $encryptedPayload = $encodedEncryptedData . ":" . $encodedIV; return $encryptedPayload; } /** * Decrypt data using AES Cipher (CBC) with 128 bit key * * @param type $key - key to use should be 16 bytes long (128 bits) * @param type $data - data to be decrypted in base64 encoding with iv attached at the end after a : * @return decrypted data */ public static function decrypt( $key, $data ) { $parts = explode( ':', $data ); //Separate Encrypted data from iv. $encrypted = $parts[0]; $iv = $parts[1]; $decryptedData = openssl_decrypt( base64_decode( $encrypted ), AesCipher::OPENSSL_CIPHER_NAME, AesCipher::fixKey( $key ), OPENSSL_RAW_DATA, base64_decode( $iv ) ); return $decryptedData; } }
java代码
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class AesCrypto { private static String CIPHER_NAME = "AES/CBC/PKCS5PADDING"; private static int CIPHER_KEY_LEN = 16; //128 bits /** * * Encrypt data using AES Cipher (CBC) with 128 bit key * * * * @param key - key to use should be 16 bytes long (128 bits) * * @param iv - initialization vector * * @param data - data to encrypt * * @return encryptedData data in base64 encoding with iv attached at end after a : * */ public static String encrypt(String key, String data) { String iv = key.substring(0,5); iv += "00000000000"; try { IvParameterSpec ivSpec = new IvParameterSpec(iv.getBytes("UTF-8")); SecretKeySpec secretKey = new SecretKeySpec(fixKey(key).getBytes("UTF-8"), "AES"); Cipher cipher = Cipher.getInstance(AesCrypto.CIPHER_NAME); cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec); byte[] encryptedData = cipher.doFinal((data.getBytes())); String encryptedDataInBase64 = Base64.getEncoder().encodeToString(encryptedData); String ivInBase64 = Base64.getEncoder().encodeToString(iv.getBytes("UTF-8")); return encryptedDataInBase64 + ":" + ivInBase64; } catch (Exception ex) { throw new RuntimeException(ex); } } private static String fixKey(String key) { if (key.length() < AesCrypto.CIPHER_KEY_LEN) { int numPad = AesCrypto.CIPHER_KEY_LEN - key.length(); for (int i = 0; i < numPad; i++) { key += "0"; //0 pad to len 16 bytes } return key; } if (key.length() > AesCrypto.CIPHER_KEY_LEN) { return key.substring(0, CIPHER_KEY_LEN); //truncate to 16 bytes } return key; } /** * * Decrypt data using AES Cipher (CBC) with 128 bit key * * * * @param key - key to use should be 16 bytes long (128 bits) * * @param data - encrypted data with iv at the end separate by : * * @return decrypted data string * */ public static String decrypt(String key, String data) { try { String[] parts = data.split(":"); IvParameterSpec iv = new IvParameterSpec(Base64.getDecoder().decode(parts[1])); SecretKeySpec secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "AES"); Cipher cipher = Cipher.getInstance(AesCrypto.CIPHER_NAME); cipher.init(Cipher.DECRYPT_MODE, secretKey, iv); byte[] decodedEncryptedData = Base64.getDecoder().decode(parts[0]); byte[] original = cipher.doFinal(decodedEncryptedData); return new String(original); } catch (Exception ex) { throw new RuntimeException(ex); } } public static void main(String[] args) { String key = "GNwmNkJ2UZDwhqJ2"; // 128 bit key String plain_text = "input张 三你好!!"; String encrypted = encrypt(key, plain_text); System.out.println(encrypted); String decrypt = decrypt(key, encrypted); System.out.println(decrypt); } }
发表评论
-
召唤神龙 - 安装 centos 8, php 8, mysql 8, laravel 8 的整套 php 运行环境
2020-11-27 16:26 559本文编写时间:2020-11-27 传说集齐龙珠可以召唤神 ... -
centos8 使用阿里镜像快速安装php7.4套件
2020-11-15 00:48 682centos8 使用阿里镜像快速安装php7.4套件 本文只 ... -
centos7 使用阿里镜像快速安装php7.4套件
2020-11-15 00:32 1017本文只考虑centos7 今日 2020-11-16 rem ... -
composer常用命令
2020-11-05 14:46 1068列出当前全局配置 composer config -l -g ... -
期待centos8+php8 + mysql8 + laravel8,8888
2020-10-29 19:24 389期待centos8+php8 + mysql8 目前主要使用 ... -
ubuntu 安装 php7.4以及各类插件
2020-10-24 13:20 904ubuntu 安装 php7.4以及各类插件 安装系统 最近 ... -
宝塔定义站点
2020-02-24 10:41 2宝塔定义站点。 1111111111111111111111 ... -
让php-fpm以root账号运行
2020-02-19 21:41 700一般来说,我们没有这种需求,但是当需要时, 可以让php-fp ... -
将代码部署到coding.net
2020-01-10 14:20 547coding.net 是一个git仓库,有免费有收费。 首先 ... -
php部署工具deployer技巧 - vendor目录创建
2020-01-06 12:06 815deployer是个好东西,可是每次都composer ,其实 ... -
自定义redis多个实例
2020-01-04 01:17 586假如多个项目部署到同一台服务器,有时会被redis的各项目前缀 ... -
推荐使用php的部署工具 deployer
2020-01-03 16:48 816php部署代码可以使用 https://deployer.or ... -
使用composer 类库 cachetool 清除opcache 的缓存
2020-01-03 16:38 888php的生产服务器上,需要把opche打开。 但有时,会被缓 ... -
laravel容器学习体会
2019-12-31 15:11 578根据文档与实测结果 假设我在app下建一个Services目 ... -
phalcon 自定义超强日志类
2019-12-18 10:00 773phalcon自带的日志文件类,有两个麻烦之处。 1、路径不能 ... -
自定义后台的使用
2019-12-18 05:22 366如果自己写后台,保存用户的表单请求值 所有的情况如下: 1 ... -
phalcon 自定义事件使用的多种方式
2019-12-16 20:43 721方法1:官方文档的方式。 这是控制器: public ... -
phalcon对控制器返回值的使用以输出json
2019-12-16 19:17 733在phalcon里,控制器的Action的方法的返回值没啥用。 ... -
phalcon数据库DB使用实例
2019-12-12 17:12 601整理了一下phalcon的db使用,写了个demo。 ... -
php-redis5.0降级成php-redis4.3
2019-08-22 00:01 842最新版本的php的redis插件,版本是5.0 但是可能会有 ...
相关推荐
java,php,GOLang,JavaScript,多端代码,使用AES ECB 128加密解密内容互通,可以使用任意一种语言加密,使用另一种语言解密
AES加密解密算法的Java实现.doc
c/c++与java互通 AES加密解密; 只使用基本char,数组运算实现加密算法;不依赖其它加密lib
c/c++与java互通 AES加密解密; 只使用基本string,数组运算实现加密算法;不依赖其它加密lib
java代码-java使用AES加密解密 AES-128-ECB加密 ——学习参考资料:仅用于个人学习使用
压缩包里有两个工程,一个vc6.0一个myeclipse,本帖是修复贴,原帖地址c/c++ 与java互通 AES加密解密,算法ECB/PKCS5PADDING http://download.csdn.net/download/wangsonghiweed/4328267 -来自CSDN,有童鞋反映有...
主要介绍了java使用Hex编码解码实现Aes加密解密功能,结合完整实例形式分析了Aes加密解密功能的定义与使用方法,需要的朋友可以参考下
该java文件中的方法主要实现AES加密、解密的功能
* 测试AES加密和解密 * @param args */ public static void main(String[] args) { /**数据初始化**/ String content = "http://www.mbaike.net"; String password = "1234567890"; /**加密(1)**/...
Delphi实现AES加密和解密, 同Java加解密兼容
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 该压缩包中包括aes加密算法的c++实现代码。
Java AES加密Java AES加密Java AES加密Java AES加密Java AES加密Java AES加密Java AES加密
VB.NET实现AES加密解密代码,可直接使用
对数据进行加密和解密 AES加密有多种算法模式,下面提供两套模式的可用源码: 一、CBC(Cipher Block Chaining,加密块链)模式 二、ECB(Electronic Code Book,电子密码本)模式 其中CBC模式下,有.NET的源码。而...
C# JAVA nodejs通用的AES加密解密算法,考虑到实际使用过程中由于客户端和服务端使用的语言不一样而又需要对数据进行加密和解密的情况,特此总结了C# JAVA nodejs通用的AES加密解密算法,供需要者参考。
1. 在深入理解AES加密/解密算法理论的基础上,设计一个AES加密/解密软件系统; 2. 完成CBC和ECB模式加密解密
本文实例为大家分享了python实现AES加密解密的具体代码,供大家参考,具体内容如下 (1)对于AES加密解密相关知识 (2)实现的功能就是输入0-16个字符,然后经过AES的加密解密最后可以得到原先的输入,运行的结果...
用C语言实现的AES加密解密算法,用C语言实现的AES加密解密算法
AES加密解密C语言源代码 Keil C51 51单片机STM32可用,可用128-Bit 192-Bit 256-Bit 加密解密;用于数据传输,提高安全性
' 功能: AES加密解密 password<==>hwWpiegaWDeE8kTlb/5BQg== , 8705a989e81a583784f244e56ffe4142 ' [Str] 预备转换的byte ' [StrKey] 16位的密钥 ' [StrIv] 16位的偏移 ' [Encrypt] 加密(缺省值)还是解密 ' ...