PHP下AES CBC/CFB 256加密
发布时间:February 3, 2017 // 分类:PHP // 1 Comment
AES CFB加解密,不用填充,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING相当于OPENSSL_NO_PADDING
root@ubuntu:~# cat a.php
<?php
$iv = random_bytes(16);
$encryption_key = hash('sha256', 'key', true);
echo 'key:'. bin2hex($encryption_key)."\n";
echo 'iv:'. bin2hex($iv)."\n";
$data = 'data';
$data = openssl_encrypt($data, 'aes-256-cfb', $encryption_key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
echo 'encrypt data:'. bin2hex($data) . "\n";
$data = openssl_decrypt($data, 'aes-256-cfb', $encryption_key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
echo 'decrypt data:'. $data . "\r\n";
AES CBC加解密,自动使用PKCS#7填充,iv可公开,最好使用唯一的随机字符:
<?php
$iv = random_bytes(16);
$encryption_key = hash('sha256', 'key', true);
$data = 'data';
$data = openssl_encrypt($data, 'aes-256-cbc', $encryption_key, OPENSSL_RAW_DATA, $iv);
echo bin2hex($data) . "\r\n";
$data = openssl_decrypt($data, 'aes-256-cbc', $encryption_key, OPENSSL_RAW_DATA, $iv);
echo $data . "\r\n";
?>
易语言调用openssl库实现aes cbc/cfb 256加密
发布时间:February 3, 2017 // 分类: // 1 Comment
AES分块加密,每块16字节,IV大小等于块大小,key大小等于加密强制128/256位。
自定义数据类型:
.版本 2
.数据类型 AES_KEY
.成员 rd_key, 整数型, , "60"
.成员 rounds, 整数型
自定义DLL命令:
.版本 2
.DLL命令 AES_set_encrypt_key, 整数型, "libeay32.dll", "@AES_set_encrypt_key", , int AES_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
.参数 userKey, 文本型, 传址
.参数 bits, 整数型
.参数 key, AES_KEY, 传址
.DLL命令 AES_set_decrypt_key, 整数型, "libeay32.dll", "@AES_set_decrypt_key", , int AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
.参数 userKey, 文本型, 传址
.参数 bits, 整数型
.参数 key, AES_KEY, 传址
.DLL命令 AES_cbc_encrypt, , "libeay32.dll", "@AES_cbc_encrypt", , void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t length, const AES_KEY *key, unsigned char *ivec, const int enc);
.参数 in, 字节集
.参数 out, 字节集
.参数 length, 整数型
.参数 key, AES_KEY
.参数 ivec, 字节集
.参数 enc, 整数型
.DLL命令 AES_cfb_encrypt, , "libeay32.dll", "@AES_cfb128_encrypt", , void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, size_t length, const AES_KEY *key, unsigned char *ivec, int *num, const int enc)
.参数 in, 字节集, 传址
.参数 out, 字节集, 传址
.参数 length, 整数型
.参数 key, AES_KEY, 传址
.参数 ivec, 字节集, 传址
.参数 int, 整数型, 传址
.参数 enc, 整数型
AES CBC加解密,须补码:
.版本 2
.支持库 dp1
.支持库 spec
.子程序 AES_CBC
.局部变量 key, AES_KEY
.局部变量 output, 字节集
.局部变量 iv, 字节集
.局部变量 len, 整数型
.局部变量 source, 字节集
.局部变量 key_str, 文本型
.版本 2
.支持库 dp1
.支持库 spec
'iv 16字节
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = 到字节集 (“data”)
'加密强度256位,密钥取32字节
key_str = 取文本左边 (取数据摘要 (到字节集 (“key”)), 32)
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
返回 ()
.如果真结束
'补码
len = 取字节集长度 (source)
.计次循环首 (16 - len % 16, )
source = source + { 0 }
.计次循环尾 ()
调试输出 (source)
len = 取字节集长度 (source)
output = 取空白字节集 (len)
AES_cbc_encrypt (source, output, len, key, iv, 1)
调试输出 (“en”, output)
.如果真 (AES_set_decrypt_key (key_str, 256, key) < 0)
返回 ()
.如果真结束
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = output
output = 取空白字节集 (len)
AES_cbc_encrypt (source, output, len, key, iv, 0)
调试输出 (“de”, output)
调试输出 (到文本 (output))
AES CFB加解密,无须补码,加密数据等于原始数据大小:
.版本 2
.支持库 dp1
.支持库 spec
.子程序 AES_CFB
.局部变量 key, AES_KEY
.局部变量 output, 字节集
.局部变量 iv, 字节集
.局部变量 len, 整数型
.局部变量 source, 字节集
.局部变量 key_str, 文本型
.局部变量 n, 整数型
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = 到字节集 (到字节集 (“data”))
key_str = 取文本左边 (取数据摘要 (到字节集 (“key”)), 32)
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
返回 ()
.如果真结束
len = 取字节集长度 (source)
output = 取空白字节集 (len)
AES_cfb_encrypt (source, output, len, key, iv, n, 1)
调试输出 (“en”, output)
'cfb下设解密key也用AES_set_encrypt_key
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
返回 ()
.如果真结束
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = output
output = 取空白字节集 (len)
n = 0
AES_cfb_encrypt (source, output, len, key, iv, n, 0)
调试输出 (output)
调试输出 (“de”, 到文本 (output))
PHP版AES CBC/CFB加解密,与易语言版兼容。
分类
- Apache (13)
- Nginx (45)
- PHP (86)
- IIS (8)
- Mail (17)
- DNS (16)
- Cacti (14)
- Squid (5)
- Nagios (4)
- Puppet (7)
- CentOS (13)
- Iptables (23)
- RADIUS (3)
- OpenWrt (41)
- DD-WRT (1)
- VMware (9)
- 网站程序 (2)
- 备份存储 (11)
- 常用软件 (20)
- 日记分析 (10)
- Linux基础 (18)
- 欧诺代理 (0)
- Linux服务 (18)
- 系统监控 (4)
- 流量监控 (7)
- 虚拟化 (28)
- 伪静态 (2)
- LVM (3)
- Shell (18)
- 高可用 (2)
- 数据库 (16)
- FreeBSD (3)
- 网络安全 (25)
- Windows (35)
- 网络工具 (22)
- 控制面板 (3)
- 系统调优 (10)
- Cisco (3)
- VPN (5)
- ROS (20)
- Vim (14)
- KMS (4)
- PXE (2)
- Mac (1)
- Git (1)
- PE (1)
- LNS (2)
- Xshell (7)
- Firefox (13)
- Cygwin (4)
- OpenSSL (9)
- Sandboxie (3)
- StrokesPlus (1)
- AutoHotKey (4)
- Total Commander (3)
- WordPress (3)
- iMacros (6)
- Typecho (2)
- Ollydbg (1)
- Photoshop (1)
- 正则 (3)
- Debian (3)
- Python (8)
- NoSQL (6)
- 消息队列 (4)
- JS (7)
- Tmux (3)
- GO (7)
- HHVM (2)
- 算法 (1)
- Docker (2)
- PT (15)
- N1 (16)
- K2P (6)
- LUKS (4)
最新文章
- linux用tc给软件应用或ip做qos限制下载上传速度
- linux/ubuntu交叉静态编译mips tmux和dropbear/openssl/openssh/bash
- 使用squashfs-tools和binwalk修改路由/光猫固件rootfs文件
- 此内容被密码保护
- openwrt/immortalwrt编译内核模块并修改版本号
- 联通贝尔光猫G-140W-UG修改为桥接/管理员密码并开启telnet
- linux/openwrt清空iptables连接跟踪状态表conntrack
- debian11或pve编译安装最新版qbittorrent-nox
- x86运行arm64 docker
- 编译纯净版k2p padavan支持802.11 kvr固件
最近回复
- fengfeng: N1 armbian 能有编译下内核吗。。我要开启can 不懂怎么操作
- 1: 方法一ngtcp2要改下:./configure PKG_CONFIG_PATH=/usr/l...
- 海运: 关闭服务器
- 海风: override.battery.charge.low以及override.battery.r...
- koldjf: 不能过滤
- 杰迪武士: 此文甚好甚强巨,依照此文在树莓派2 + Rasbian上部署成功 感谢博主美文共赏
- 海运: ups不知有没选项可设置此参数,不过你可以在另外一台电脑上安装nut客户端自动关机。
- kgami: 想请教一下,设置了的电脑自动关机之后,几秒后UPS怎么也跟着关机了,导致另外一台电脑没关机就断...
- 海运: 写的很详细了啊,/etc/nut/hosts.conf用以nut-cgi连接nut服务器参数,...
- ryan: 请问下nginx配置好了,怎么和这个nut链接呢?最后可视化管理这块能给个详细一点的教程么?谢谢。