1. 程式人生 > >對稱加密——AES的php程式碼

對稱加密——AES的php程式碼

對稱加密是相對於非對稱加密存在的。

對稱加密,是通過金鑰加密後,可以再通過之前加密的金鑰進行解密,得到加密之前的資訊。

非對稱加密,是有公鑰和私鑰,如果使用公鑰加密,那麼需要用私鑰解密,得到加密之前的資訊;同樣,如果使用私鑰加密,那麼需要用公鑰解密,得到加密之前的資訊。

由於php7已經廢棄了mcrypt的內建函式,所以,本篇採用openssl的加密函式。程式碼如下:

/**
 * Class OpensslEncrypt 對稱加密類
 */
class OpensslEncrypt
{
    const IV = "d89fb057f6d4f03g";//加密向量,16個位元組
    const KEY = 'e9c8e878ee8e2658';//金鑰,16個位元組

    /**
     * 加密字串
     * @param string $strContent 待加密的字串內容
     * @param string $key 加密key
     * @return string 返回加密後的字串,失敗返回false
     */
    public static function encrypt($strContent,$key = self::KEY,$iv = self::IV){
        $strEncrypted = openssl_encrypt($strContent,"AES-128-CBC", $key,OPENSSL_RAW_DATA, $iv);
        return base64_encode($strEncrypted);
    }

    /**
     * 解密字串
     * @param string $strEncryptCode加密後的字串
     * @param string $key 加密key
     * @return string 返回解密後的字串,失敗返回false
     */
    public static function decrypt($strEncryptCode,$key = self::KEY,$iv = self::IV){
        $strEncrypted = base64_decode($strEncryptCode);
        return openssl_decrypt($strEncrypted,"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv);
    }
}

本篇的AES加密的分組加密模式採用的CBC的模式,所以需要個初始的加密向量(如果採用ECB的模式則不需要加密向量)。

採用base64的編碼,是因為openssl_encrypt()得到是原始二進位制資料,需要轉換一下編碼。

OPENSSL_RAW_DATA,是按位或的標記(本處是0),根據這個標記得到原始的二進位制資料。

相關推薦

對稱加密——AES的php程式碼

對稱加密是相對於非對稱加密存在的。 對稱加密,是通過金鑰加密後,可以再通過之前加密的金鑰進行解密,得到加密之前的資訊。 非對稱加密,是有公鑰和私鑰,如果使用公鑰加密,那麼需要用私鑰解密,得到加密之前的資訊;同樣,如果使用私鑰加密,那麼需要用公鑰解密,得到加密之前的資訊。

對稱加密

數據加密 bytes codebase 私鑰 .get comm x509 公鑰 except   非對稱加密為數據的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰

java加密算法入門(三)-非對稱加密詳解

共享數據 net clas 實例 查看 安全性 自己的 generator mir 1、簡單介紹 這幾天一直在看非對稱的加密,相比之前的兩篇內容,這次看了兩倍多的時間還雲裏霧裏的,所以這篇文章相對之前的兩篇,概念性的東西多了些,另外是代碼的每一步我都做了介紹,方便自己以後

前端 使用 crypto-js 對數據進行對稱加密

div col add 對稱加密 style clas encrypted github mss 傳送門: # crypto-js github https://github.com/brix/crypto-js demo1: // 加載核心加密庫 var Cry

對稱加密詳解,以及JAVA簡單實現

turn bsp 十進制 stat mage 需要 對稱密鑰 else ges (原) 常用的加密有3種 1、正向加密,如MD5,加密後密文固定,目前還沒辦法破解,但是可以能過數據庫撞庫有一定概率找到,不過現在一般用這種方式加密都會加上鹽值。 2、對稱加密,通過一個固定

對稱加密與非對稱加密

通過 lan pan 消息加密 ack 屬於 加密算法 效率 構建 1.對稱加密 對稱加密(也叫私鑰加密)指加密和解密使用相同密鑰的加密算法。有時又叫傳統密碼算法,就是加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。而在大多數的對稱算法中,加密密

對稱加密和分組加密中的四種模式(ECB、CBC、CFB、OFB)

模式 ips pos .cn 一個 密碼 明文模式 ref ipp 對稱加密和分組加密中的四種模式(ECB、CBC、CFB、OFB) 一. AES對稱加密:

對稱加密php

rijndael ofb win ring subst 向量 creat and aes /** * 常用對稱加密算法類 * 支持密鑰:64/128/256 bit(字節長度8/16/32) * 支持算法:DES/AES(根據密鑰長度自動匹配使用:DES:64bit

php提供的對稱加密算法

() public and base 加密算法 decode roo ces stat KEY 是之前定義的常量 Mcrypt::encrypt(); Mcrypt::decrypt(); defined(‘ROOT‘) or exit(‘Access Denied

對稱加密 可用

大小 rar system encoding 解決辦法 scan 生成器 try exceptio import java.io.IOException;import java.io.UnsupportedEncodingException;import java

詳解 HTTPS 移動端對稱加密套件優

復用 htm session 很多 合作 頁面 wid 詳解 電池 近幾年,Google、Baidu、Facebook 等互聯網巨頭大力推行 HTTPS,國內外的大型互聯網公司很多也都已啟用全站 HTTPS。 Google 也推出了針對移動端優化的新型加密套件 ChaCha

如何使用gpg工具實現公鑰加密對稱加密和非對稱加密)?

gpg工具 對稱加密 公鑰加密 非對稱加密 使用gpg實現公鑰加密【對稱加密】1、 對稱加密file文件gpg -c filels file.gpg------------------------對稱加密過程------------------------輸入口令,兩次,例如centos再查看

對稱加密 - SSH, HTTPS

none 知乎 ext question 使用 soft 對稱 table sim 你想用實際生活中的例子懂"非對稱加密"嗎, 請點擊知乎優秀解答"非對稱加密", 一看就懂!!!看完上面形象的解釋後, 再看這個總結性的概括https://www.zhihu.com/ques

Java加密與解密筆記(二) 對稱加密

解決 理解 span ring println key ted utf-8 rate 前面的僅僅是做了編碼或者摘要,下面看看真正的加密技術。 DES public class DESUtil { static final String ALGORITHM = "

Java加密與解密筆記(三) 非對稱加密

arr 內容 phy 資料 密碼 load esp uid user 非對稱的特點是加密和解密時使用的是不同的鑰匙。密鑰分為公鑰和私鑰,用公鑰加密的數據只能用私鑰進行解密,反之亦然。 另外,密鑰還可以用於數字簽名。數字簽名跟上文說的消息摘要是一個道理,通過一定方法對數據內容

對稱加密技術- RSA算法數學原理分析

這樣的 另一個 href 使用 兩個 對稱 基礎 大於 深入淺出 非對稱加密技術,在現在網絡中,有非常廣泛應用。加密技術更是數字貨幣的基礎。 所謂非對稱,就是指該算法需要一對密鑰,使用其中一個(公鑰)加密,則需要用另一個(私鑰)才能解密。 但是對於其原理大部分同學應該都是一

DES對稱加密算法簡析

nts 奇偶校驗位 throw parse https stl public aes ast 1 對稱加密算法   在了解DES算法前,先加單介紹一下對稱加密算法,因為DES屬於對稱加密算法的一種。   對稱加密算法是應用較早的加密算法,技術成熟。在對稱加密算法中,數據發信

AES/CBC/PKCS5Padding對稱加密

throw imp string base64 nbsp deb try encrypt java 1 package unit; 2 import javax.crypto.Cipher; 3 import javax.crypto.spec.IvParamete

[svc]對稱加密/非對稱加密細枝末節-如何做到數據傳輸的authentication/data integrity/confidentiality(私密)

ecc 數據完整性 安全 post 數字簽名 .html 模式 數字證書 大量 對稱/非對稱/混合加密的冷知識 數據在互聯網上傳輸,要考慮安全性. 講到安全,要從三方面考慮: 1、authentication 每一個IP包的認證,確保合法源的數據 2、data integ

DES--------Golang對稱加密之模式問題實戰

multiple ext 密文 size 補充 資料 異或 input 進行 1. 背景 近期項目在對接第三方產品,傳輸過程中涉及到數據加密, 數據加密流程為: 發送數據DES加密 DES加密後的數據進行base64編碼 發送,接受數據 接受讀取的數據進行base64解