我正在尝试在WAMP设置中安装Laravel.我收到一条警告信息,因为我没有启用我在WAMP中已经完成的openssl.
这是该消息的屏幕截图.

我使用 YII2 框架用 PHP 构建了一个网站。当我使用 file_get_contents($requestUrl, false, stream_context_create($arrContextOptions)) 时,我收到错误消息error:0A000126:SSLroutines::unexpected eof 在阅读时 我还尝试通过编辑 openssl.cnf 文件来启用旧提供程序,但没有成功。参考:https://gist.github.com/rdh27785/97210d439a280063bd768006450c435d
任何帮助将不胜感激。
服务器:Nginx(nginx/1.18.0)操作系统:Ubuntu 22.04 LTS PHP:7.4.29 Openssl:1.1.1d
我在window7上安装了Typo3 6.2.2但是我收到如下错误信息:
PHP OpenSSL extension not working
Something went wrong while trying to create a new private key for testing. Please check the integration of the PHP OpenSSL extension and if it is installed correctly.
我试图在互联网上找到关于这个错误的解决方案,但我无法解决这个错误.
有人知道,你能帮我找到解决方案吗?谢谢.
我即将使用以下脚本来加密和解密某些数据.我正在使用它,因为我当前的加密在我们的新服务器上不起作用.我们目前正在使用mcrypt,所以我想更改为openssl.
在我们的数据库中,我们使用aes加密,它使用128位密钥,所以我知道密钥是什么,但我不知道openssl iv是什么?为什么我需要钥匙和iv.
我即将使用的代码就是这个,我在网站上找到了,因为我不太了解加密.
显然我会修改它,以便将密钥保存在其他地方.
function encrypt_decrypt($action, $string) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = 'This is my secret key';
$secret_iv = 'This is my secret iv';
// hash
$key = hash('sha256', $secret_key);
// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
$iv = substr(hash('sha256', $secret_iv), 0, 16);
if( $action == 'encrypt' ) {
$output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
$output = base64_encode($output);
}
else if( $action == 'decrypt' ){ …Run Code Online (Sandbox Code Playgroud) 由于Mcrypt已被弃用,我想在我的代码中使用OpenSSL,因为我们已经在我们的服务器中使用了PHP 7.0.17并且没有告诉他们何时升级它.
某些第三方API(可能在PHP 5.x上托管并使用mcrypt)正在使用加密数据.他们提供了用于加密/解密字符串的方法.
他们是这样的
$secret = 'a0a7e7997b6d5fcd55f4b5c32611b87c' ;
public function encrypt128($str)
{
$block = mcrypt_get_block_size("rijndael_128", "ecb");
$pad = $block - (strlen($str) % $block);
$str .= str_repeat(chr($pad), $pad);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $secret, $str, MCRYPT_MODE_ECB));
}
public function decrypt128($str)
{
$str = base64_decode($str);
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $secret, $str, MCRYPT_MODE_ECB);
$len = strlen($str);
$pad = ord($str[$len - 1]);
return substr($str, 0, strlen($str) - $pad);
}
Run Code Online (Sandbox Code Playgroud)
small1如果加密,使用这些方法字符串v7IXp5vVaFVXXlt/MN8BVw==
我们希望openssl_encrypt在我们这边使用,如果我们用OpenSSL加密相同的字符串,它必须给出与Mcrypt相同的结果.我研究过使用rijndael-128模式的mcrypt ecb应该与OpenSSL兼容aes-128-ecb. …
我想使用php生成加密安全的唯一uuids.
uniqid()提供唯一但不安全的id,openssl_random_pseudo_bytes()提供安全但不唯一的ID.两者(以下代码)的组合是正确的方法还是有更好的解决方案?
uniqid(bin2hex(openssl_random_pseudo_bytes(10)), true);
Run Code Online (Sandbox Code Playgroud) 对于给定的$ key,$ message和$ iv,我有这个mcrypt_encrypt调用:
$string = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv);
Run Code Online (Sandbox Code Playgroud)
我想将mcrypt_encrypt呼叫改为$key一个,以便将来证明这一点.
通过具有$message或$iv和mcrypt_encrypt我得到的更多的类似的反应,但不完全相同.还有其他方法可以称之为完美匹配吗?
我正在为lorem-ipsum openssl_encrypt+ $mode = 'des-ede3-cbc'组合得到这个(base64_encoded),所以我开始相信一个函数或另一个函数在加密前稍微填充消息...
对于mcrypt
"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBfjug2GLX7uo ="
为了openssl
"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBvte4swdttHY ="
尝试使用$ options传递OPENSSL_ZERO_PADDING,但传递除1 之外的任何内容(OPENSSL_RAW_DATA或true)会导致空字符串...
既不使用$mode = '3DES';也不$options = true工作... :(
还有其他线索吗?我正在使用"OpenSSL 1.0.2g 2016年3月1日".
已经读过这个 q&a,但它对我没有帮助.不是唯一 一个有填充问题的人,但到目前为止还没有解决方案.(第二个答案谈到添加填充到mcrypt调用,我真的想从openssl加密调用中删除填充...
我有一小段一些数据(小于1kb),我希望用户代理从我的网站发送到其他网站.为了让其他站点验证我是创建字符串的那个,我有两个选项.
我不想设置HMAC,因为这意味着我必须为每个站点使用自定义键,这将是一个痛苦.
在这两个选择中,似乎#2会节省带宽,这使它看起来是更好的选择.
那么如何使用PHP设置公钥/私钥加密,是否有任何缺点?
我公司正在我们的网站上实施V.me结账.Visa为我们提供了一个用于解密数据的php辅助函数文件,但其中一个使用openssl_decrypt了OPENSSL_RAW_DATA参数,该参数仅在PHP 5.4.something中可用.
return openssl_decrypt($data, 'aes-256-cbc', hashKey($key), OPENSSL_RAW_DATA, $iv);
Run Code Online (Sandbox Code Playgroud)
我们正在运行PHP 5.3,没有升级选项.如何修改此功能,以便在没有全局参数可用的情况下仍然执行它的设计?
我想将C#函数转换为PHP函数.以下是C#中Function的链接:https://stackoverflow.com/a/19441805/3581428
public static string Encrypt(string clearText)
{
string EncryptionKey = "MAKV2SPBNI99212";
byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
using (Aes encryptor = Aes.Create())
{
Rfc2898DeriveBytes pdb = new
Rfc2898DeriveBytes(EncryptionKey, new byte[]
{ 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
encryptor.Key = pdb.GetBytes(32);
encryptor.IV = pdb.GetBytes(16);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(clearBytes, 0, clearBytes.Length);
cs.Close();
}
clearText = Convert.ToBase64String(ms.ToArray());
}
}
return clearText; …Run Code Online (Sandbox Code Playgroud) php-openssl ×10
php ×9
encryption ×4
cryptography ×2
mcrypt ×2
openssl ×2
3des ×1
apache ×1
c# ×1
composer-php ×1
libsodium ×1
pgp ×1
prng ×1
secret-key ×1
security ×1
typo3 ×1
ubuntu ×1
uuid ×1
windows ×1