标签:check arw ssl string min 密码 Opens ide 完成
加密的类型
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
注意:公钥是由私钥生成的,公钥和私钥是一对一的
在非对称加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。
单向散列函数(也称杂凑函数、Hash函数)指的是根据输入消息计算后,输出固定长度数值的算法,输出数值也称为“散列值”或“消息摘要”,其长度通常在128~256位之间。
常见散列函数(Hash函数)有:
使用openssl系列函数使用公钥私钥实现数据加密解密
首先生成公钥私钥并存入文件
<?php
//第一步,生成一把新钥匙对象这是私钥对象
$key = openssl_pkey_new();
//第二步,把生成的私钥,保存成私钥文件
openssl_pkey_export_to_file($key, ‘./private.txt‘);
//下面这句注视的意思是,从现有的私钥文件,获取到私钥对象
//$key = openssl_get_privatekey(file_get_contents( ‘./private.txt‘));
//从私钥中,获取公钥字符串 后面[‘key‘]的意思是从这个数组中直接获取该键
$key_detail = openssl_pkey_get_details($key)[‘key‘];
//把公钥字符串,保存成文件
file_put_contents(‘./public.txt‘, $key_detail);
echo ‘完成‘;
然后模拟使用公钥私钥完成加密解密
<?php
//第一步,取出私钥。
$private_key=openssl_get_privatekey(file_get_contents(‘./privatekey.txt‘));
//第二步,取出公钥
//从私钥里面取 ,理论上内存中计算要比文件中获取要快,两种方法任选其一
$public_key=openssl_get_publickey(openssl_pkey_get_details($private_key)[‘key‘]);
//原字符串
$origin_str=‘中英文Abc+123‘;
//使用公钥k加密函数进行加密,第一个参数原文,第二个参数是结果。 第三个参数是 公钥对象 (私钥对象会报错)
openssl_public_encrypt($origin_str, $crypted, $public_key);
//var_dump($crypted是乱码);
//使用公钥加密后。只能使用私钥解密函数进行解密,注意第三个参数是私钥对象
openssl_private_decrypt($crypted, $decrypted, $private_key);
var_dump($decrypted);
//也可以 相反的操作。 私钥加密,公钥解密。如下
//openssl_private_encrypt($origin_str, $crypted, $private_key);
//openssl_public_decrypt($crypted, $result, $public_key);
//vardump($result)也是原文
laravel框架使用crypt实现数据加密
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* 存储用户的保密信息。
*
* @param Request $request
* @param int $id
* @return Response
*/
public function storeSecret(Request $request, $id)
{
/*//加密数据
$pwd = ‘123456789‘;
echo encrypt($pwd);die;
//解密数据
$str = "eyJpdiI6Ik93ZmFoRG1PVEFsOWtqY3ArWnYxMVE9PSIsInZhbHVlIjoiSnFSVkJFc3JNb0JmcEVZdGxGenRiK3orZlVBNzhrajJFMVV1YWtTXC84Q0k9IiwibWFjIjoiMjYyODExYjgzZWIwYWYyODVlOGM5MzQ1MDkxMjIzNzFlYzNhZTUzMzIzYjRiYTFjYzgyMDU2YmM2YjViN2UyYyJ9";
$data = decrypt($str);
echo $data;die;*/
echo decrypt($str);die;
$user = User::findOrFail($id);
$user->fill([
‘secret‘ => encrypt($request->secret)
])->save();
}
}
标签:check arw ssl string min 密码 Opens ide 完成
原文地址:https://www.cnblogs.com/dsds/p/11557754.html