根据OpenSSL(https://www.openssl.org/docs/apps/enc.html#OPTIONS)的文档,他们期望key和iv为十六进制值;这仅表示数字吗?还是会使用md5哈希? (因为md5似乎不可逆)

>请注意,我提到了key和iv,因为PHP函数openssl_encrypt中的$password实际上是密钥.

function strtohex($x)

{

$s='';

foreach (str_split($x) as $c) $s.=sprintf("%02X",ord($c));

return($s);

}

$source = 'It works !';

$iv = substr( md5( "123sdfsdf4567812345678" ), 0, 16 );

$pass = '1234567812345678';

$method = 'aes-256-cbc';

echo "\niv in hex to use: ".$iv;

echo "\nkey in hex to use: ".strtohex($pass);

echo "\n";

file_put_contents ('./file.encrypted',openssl_encrypt ($source, $method, $pass, true, $iv));

$exec = "openssl enc -".$method." -d -in file.encrypted -nosalt -nopad -K ".strtohex($pass)." -iv ".$iv;

echo 'executing: '.$exec."\n\n";

echo exec ($exec);

echo "\n";

解决方法:

您的第一个链接是关于命令行工具,而不是PHP函数.您将很难在终端中投入二进制数据,因此为什么必须对密钥进行十六进制编码.

但是,在PHP中,openssl_encrypt()和openssl_decrypt()需要一个原始二进制字符串.

该文档还具有误导性,因为它提到的是“密码”而不是“密钥”.您已经注意到了,但是加密密钥不是您应该仅通过键盘输入的内容,并且md5()-也不是加密密钥的答案.

密钥必须通过openssl_random_pseudo_bytes()随机生成(或者至少对于您的情况而言这是最方便的方式):

$key = openssl_random_pseudo_bytes(32);

(静脉注射也是如此)

如果需要对生成的$key进行十六进制编码,只需将其传递给bin2hex(),但是您给出的示例有点破损……您正在执行双重加密.通过PHP加密文件内容就足够了,您无需处理命令行.

请注意,我的回答远非做加密的全部故事.您还应该添加身份验证,适当的填充,仔细考虑如何进行管理和维护.存储您的密钥等

如果您只需要简单地完成工作,请使用流行的加密库,不要自己编写.

标签:encryption,openssl,php-openssl,php

来源: https://codeday.me/bug/20191121/2050932.html

php openssl iv,PHP-openssl_encrypt,openssl_decrypt密钥,iv相关推荐

  1. openssl qt 生成秘钥_关于openssl作的rsa生成密钥及加解密

    关于openssl做的rsa生成密钥及加解密 谁能给个在QtCreator上用openssl做的rsa生成密钥及加解密的例子参考下  网上找的都是片段 不全   谢谢! RSA openssl qtc ...

  2. PHP openssl_encrypt openssl_decrypt 尝试

    /*可以用来做数据的加密和解密*/class Openssl {private $key = null;private $data = null;private $cipher = null;priv ...

  3. openssl和keytool生成rsa密钥及证书开发指南

    目录 一 .什么是RSA 二.der编码与pem编码 三.openssl命令生成rsa密钥 四.RSA加密标准PKCS 五.密钥与证书 六.jks证书 一. 什么是RSA RSA是一种公钥密码算法,它 ...

  4. openssl生成rsa密钥对和密钥格式转换

    首先要下载安装好openssl,下载地址:https://www.openssl.org/source/,安装完成后可以进到命令行运行以下命令: 1. 生成私钥: openssl genrsa -ou ...

  5. vue中使用js进行AES加密及解密(含密钥和iv偏移量)、以及HMAC-SHA256加密方法对于签名加密的使用

    一.AES加密解密 1.下载安装 npm install crypto-js --save-dev 2.在utils文件夹下创建encryp.js文件进行aes加密解密工具类方法的封装 import ...

  6. Android 平台DES IV 加密解密随笔

    Android 平台DES IV 加密解密随笔 DES加密接触过好多次了,但总容易忘,和服务器交互时,加出来不一致后面能解密成功但是头部是乱码导致小坑了一会,这次记录下来~ 根据网上资料和自己的理解, ...

  7. 评分卡模型剖析之一(woe、IV、ROC、信息熵)

    信用评分卡模型在国外是一种成熟的预测方法,尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使用,其原理是将模型变量WOE编码方式离散化之后运用logistic回归模型进行的一种二分类变量的广 ...

  8. 特征工程中的IV和WOE详解

    1.IV的用途 IV的全称是Information Value,中文意思是信息价值,或者信息量. 我们在用逻辑回归.决策树等模型方法构建分类模型时,经常需要对自变量进行筛选.比如我们有200个候选自变 ...

  9. 风控算法知识——浅谈信息熵与IV值应用介绍

    此前我们讨论了WOE值以及应用场景,而提到了WOE值,就不得不再提出IV值,IV值公式的形成来源于信息熵,公式形式是类似的,只是具体的计算不一样.传送门:<风控算法知识--WOE值的深度理解与应 ...

  10. LKT系列加密芯片如何预置openssl生成的rsa密钥完成运算(二)

    第二篇 openssl生成的rsa密钥如何写入到加密芯片中 1.测试目标 将openssl生成的RSA1024位密钥写入到LKT系列加密芯片的公私钥文件中 2.测试环境 本示例运行环境为windows ...

最新文章

  1. GNU make manual 翻译( 一百一十三)
  2. Android开发之--Preferences的使用
  3. jstack调试_增压的jstack:如何以100mph的速度调试服务器
  4. android中心类库
  5. win 杀掉占用的端口_Windows netstat 查看端口、进程占用、杀掉进程
  6. Spring Boot文档阅读笔记-how-to-implement-2-way-ssl-using-spring-boot
  7. SpringBoot—启动报错Exception in thread “main“ java.lang.ClassNotFoundException
  8. 【收集】腾讯AlloyTeam
  9. Tableau安装教程
  10. 计算两个日期之间,相差多少天C语言详解
  11. 小波变换matlab代码,matlab小波变换代码
  12. 制作u盘winpe启动盘_Ventoy启动盘制作工具,Win、Linux、PE多系统镜像装进同1个U盘...
  13. 解决直接读取webapp下的文件404问题
  14. 原神换服报错(二级地址解析失败),换服失败,无反应
  15. 如何上架自己的应用到各大应用商店?
  16. 台式计算机常用哪些主板结构,一种台式计算机用主板的制作方法
  17. CCCC天梯赛 L1-079 天梯赛的善良
  18. 数据同步工具—sqoop 2.x
  19. netconf协议开发
  20. 可以挂机赚钱的游戏有哪些?

热门文章

  1. 实现微信 委托代扣/包月服务
  2. 5G网络架构 — 接入网/传输网/核心网
  3. 取整函数 --- 以Python为例
  4. T和T’触发器的特点和区别
  5. java 生成ppt_Java 创建并应用幻灯片母版
  6. Java顺序结构综合练习三之金融投资收益计算
  7. vnc远程控制软件中文版,4款好用的vnc远程控制软件中文版
  8. 获取 点集合 的 rect
  9. 图解 Kafka,画得太好了!
  10. 流式上传文件到服务器磁盘,通过HTTP将数据从浏览器流式传输到服务器的方法...