1. 程式人生 > >php AES 加解密方法使用函數了解

php AES 加解密方法使用函數了解

1、php中關於mcrypt加密的一些函式
1)mcrypt_get_iv_size — 返回指定演算法/模式組合的初始向量大小

int mcrypt_get_iv_size ( string $cipher , string $mode )

2)mcrypt_list_algorithms – mcrypt支援的加密演算法列表
3)mcrypt_list_modes() – mcrypt支援的加密模式列表
php中預設沒有mcrypt擴充套件,檢測是否支援mcrypt

$cipher_list = mcrypt_list_algorithms();//mcrypt支援的加密演算法列表  
$mode_list = mcrypt_list_modes(); //mcrypt支援的加密模式列表 echo '<xmp>'; print_r($cipher_list); print_r($mode_list);

若支援,輸出結果為:

Array
(
    [0] => cast-128
    [1] => gost
    [2] => rijndael-128
    [3] => twofish
    [4] => cast-256
    [5] => loki97
    [6] => rijndael-192
[7] => saferplus [8] => wake [9] => blowfish-compat [10] => des [11] => rijndael-256 [12] => serpent [13] => xtea [14] => blowfish [15] => enigma [16] => rc2 [17] => tripledes [18] => arcfour ) Array ( [0] => cbc [1
] => cfb [2] => ctr [3] => ecb [4] => ncfb [5] => nofb [6] => ofb [7] => stream )

其中rijndael-128,rijndael-192,rijndael-256就是AES加密,3種分別是使用不同的資料塊和金鑰長度進行加密
4)hash_hmac — 使用 HMAC 方法生成帶有金鑰的雜湊值
5)hash_algos — 返回已註冊的雜湊演算法列表

<?php
print_r(hash_algos());
?>

輸出結果為:

Array
(
    [0] => md2
    [1] => md4
    [2] => md5
    [3] => sha1
    [4] => sha224
    [5] => sha256
    [6] => sha384
    [7] => sha512
    [8] => ripemd128
    [9] => ripemd160
    [10] => ripemd256
    [11] => ripemd320
    [12] => whirlpool
    [13] => tiger128,3
    [14] => tiger160,3
    [15] => tiger192,3
    [16] => tiger128,4
    [17] => tiger160,4
    [18] => tiger192,4
    [19] => snefru
    [20] => snefru256
    [21] => gost
    [22] => adler32
    [23] => crc32
    [24] => crc32b
    [25] => salsa10
    [26] => salsa20
    [27] => haval128,3
    [28] => haval160,3
    [29] => haval192,3
    [30] => haval224,3
    [31] => haval256,3
    [32] => haval128,4
    [33] => haval160,4
    [34] => haval192,4
    [35] => haval224,4
    [36] => haval256,4
    [37] => haval128,5
    [38] => haval160,5
    [39] => haval192,5
    [40] => haval224,5
    [41] => haval256,5
)

2、laravel通過mcrypt PHP 的擴充套件提供的AES-256加密元件

Crypt::encrypt($str);//加密
Crypt::decrypt($encryptedValue);//解密

注意: 確認在 app/config/app.php 檔案設定了一個32隨機字元給 key 項。否則,加密的值是不安全的。
laravel中 Encrypter類中定義的一些初始變數

    protected $key;
    protected $cipher = 'rijndael-256';
    protected $mode = 'cbc';
    protected $block = 32;
    public function __construct($key)
    {
        $this->key = $key;
    }

可設定在encrypter中使用的cipher 和 mode:

Crypt::setMode('crt');//加密模式
Crypt::setCipher($cipher);//加密演算法

laravel中使用AES加密示例:

$str = 'xiaoming';
Crypt::setMode('ecb');
Crypt::setCipher('rijndael-128');
$s = Crypt::encrypt($str);
echo $s;die;

結果為:

eyJpdiI6IkpjUEJKcHUyNGpmaWxRTURXXC9DN1R3PT0iLCJ2YWx1ZSI6IkZDRDNZKzQ3WGV2QVhaVkJEcXMyRzA0c3luTlE4ZGIxaTFzTzZpanhUU289IiwibWFjIjoiOTI2MDY4OGIwNGRkM2MwZWI4YzdkMTI4MDBhNmJlZDBmM2YwYmQzN2Y5ZWRhMDhiZmRjN2ZiYjYwNmEzZmI0YSJ9

相關推薦

php AES 解密方法使用

1、php中關於mcrypt加密的一些函式 1)mcrypt_get_iv_size — 返回指定演算法/模式組合的初始向量大小 int mcrypt_get_iv_size ( string $cipher , string $mode ) 2)mc

PHP——AES解密 +SIGN校驗唯一性安全性(Api)

在這裡插入圖片描述 sign(客戶端和服務端約定的加盟方式) 驗籤每次http請都放在header中 Header中放一些基礎的引數 比如sign , version 版本號 , app_type 客戶端型別 model:手機型別 小米 華為… sign如何生成? 1:AE

STL random_shuffle 洗牌一下

洗牌函式的含義就是將資料打亂順序,測試程式碼如下: #include <iostream> #include <algorithm> #include <vector> #include <string> #include <random

Python小白進階——bisect一下

""" bisect 為可排序序列提供二分查詢演算法 """ import bisect #使用bisect函式前需要對列表進行排序,否則雖然可以輸出數值,但沒有意義 a = [1, 5, 6, 10, 9] a.sort() print("最初的列表:",

node總結之回撥

Node.js的非同步程式設計的直接體現就是回撥,其中,非同步程式設計依託於回撥來實現,但不能說使用了回撥後程序就非同步化了。回撥函式在完成任務後就會被呼叫,Node 使用了大量的回撥函式,Node 所有 API 都支援回撥函式。例如,我們可以一邊讀取檔案,一邊執行其他命令,

遞歸()

深圳 sql pre 應用 style 了解 是否 set user def func1(): print(111) print("www") func1() # 111 # www import sys print(sys.getrecursionli

Opencv 基本2

CvMat* cvCreateMat(int rows, int cols, int type); type: 矩陣元素型別. 格式為CV_<bit_depth>(S|U|F)C<number_of_channels>. 例如: CV_8UC1 表示8位無符號單通道矩陣, CV_32S

PHP:call_user_func()使用方法

func instead 實例 div style bsp color can this call_user_func函數類似於一種特別的調用函數的方法,使用方法如下: <?php function nowamagic($a,$b) { echo

PHP知識點--方法

函數名 類型 都是 變量 span 系統 變量名 直接 -s 一、基本使用1、函數定義形式function 函數名 (形參1,形參2,.... ){//函數體(代碼塊)}?函數調用流程分析o開始調用:實際參數傳數據給形式參數o程序執行流程進入到函數中(一個獨立的運行空間)

php實現的三個常用加密解密功能示例

htm 常用 zab rand unlock ret == UNC test 目錄 算法一: 算法二: 算法三(改進第一個加密之後的算法) 本文實例講述了php實現的三個常用加密解密功能函數。分享給大家供大家參考,具體如下: 算法一: //加密函數 function

PHP利用openssl整理AES解密

<?php /** * Created by PhpStorm. * User: nassir * Date: 2017/12/11 * Time: 15:25 */ namespace Ryanc\RSA; class AES {

ThinkPHP:F方法

過濾 thinkphp 子目錄 讀取 數據緩存 文件 快速 由於 寫入 我們已體味了ThinkPHP中的S編制的用法,F編制其實是S編制的一個子集功用,僅用於復雜數據緩存,而且只能支撐文件方式,不支撐緩存有用期,由於采取的是PHP前往編制,所以其效率較S編制較高,是以我

AES解密

ext ole gen public 去掉 ati 默認 cal algo public class AESHelper { /// <summary> /// 獲取密鑰 /// </summar

PHP英文字母大小寫轉換小結

字符串 content 字符轉換 class 文字 單詞 con 英文 code 每個單詞的首字母轉換為大寫:ucwords() 代碼如下: <?php$foo = ‘hello world!‘;$foo = ucwords($foo); /

[PHP] 重回基礎Array相關

cti oss bcg sheng ger aix ubi air del C%E8%AF%AD%E8%A8%80--%E9%80%9A%E7%94%A8%E7%B1%BB%E5%9E%8B%E7%9A%84swap%E5%87%BD%E6%95%B0%E5%92%8C%E

php面向對象構造,析構

數值 其它 truct 垃圾 不能 書寫 屬性和方法 顯示調用 cto 在php面向對象中有構造函數和析構函數 構造函數使用__construct()書寫,它允許開發者在一個類中定義一個方法作為構造函數,具有構造函數的類會在每次創建新對象時先調用此方法,所以適合在使用對象之

PHP 圖像居中裁剪

set 根據 居中 res 圖像 break iss int 文件 /** * 居中裁剪圖片 * @param string $source [原圖路徑] * @param int $width [設置寬度] * @param int $height [設置高度]

18)添引號轉移,防止SQL註入

factor isset art .com md5 ati 出錯 pri 取數據 目錄機構:      然後我的改動代碼:     MysqlDB.class.php      1 <?php 2 3 /** 4

PHP 3DES 解密(CBC模式,pkcs5padding填充)

ner ech scm blog input 3des解密 tde 結合 rip 1、前言:項目中接入第三方支付遇到3DES加密,以前也沒用過,搜了好多,都不適用,各種不對,後來自己結合搜到的終於弄正確了,檢測地址:http://tool.chacuo.net/crypt3

PHP的array_walk和array_map實現組值UTF-8轉GBK編碼

for php false 2gb fun foreach () clas 內部 在PHP中,array_walk() 和 array_map()兩個函數都可以實現對數組中每個值的修改,比如本例就是將數組中所有的值,由UTF-8編碼轉成GBK編碼。 當然,除了這兩個函數,也