当前位置: 首页>Php>正文

openssl aes加密,php ctr b,用PHP解密AES CTR Little Endian

openssl aes加密,php ctr b,用PHP解密AES CTR Little Endian

我在使用PHP解密使用iOS 5.x的CommonCrypto庫加密的字符串時遇到麻煩.以下是參數:

Algorithm: AES-128

Mode: CTR

openssl aes加密?Mode options: CTR Little-Endian

Padding: None

這是我最大的嘗試示例:

$encrypted = base64_decode('MlNFlnXE1sqIsmKZRtjChBvUMgiJlXgdjHVxQJ6JK24Id4uaN9NK/nBtY+cgrMJR/PRJRCmIUx0boQO5XqJYZ8VJ0w==');

php解密工具?$key = base64_decode('HB+dD1Irj2rXQ/nO+IuqSiK9xVE3PD9cZGIGzrMtwtA=');

$iv = base64_decode('2gxxKYU/G4lj7174e5wj+g==');

$cryptor = mcrypt_module_open('rijndael-128', '', 'ctr', '');

mcrypt_generic_init($cryptor, $key, $iv);

php解密免費、echo mdecrypt_generic($cryptor, $encrypted);

mcrypt_generic_deinit($cryptor);

mcrypt_module_close($cryptor);

輸出看起來像這樣:

mzphp解密?Lorem ipsum dolo?N??]???+?

????x??k????}??'??????;t

但這應該是“ Lorem ipsum dolor坐著,奉獻自若,sed do …”(包括尾隨省略號.)

塊大小為16,并且正確獲取了前16個字符.這似乎表明Mcrypt和CommonCrypto之間的AES CTR反增量過程不匹配.到目前為止,我聽到的每個人都認為這是Big Endian與Little Endian的問題.

php源代碼解密,我花了幾天時間試圖自己找出所有這些字節序和反增量的東西,但是對我來說仍然是巫毒教. :-(我只需要一些PHP代碼即可正確地解密我的字符串.我不在乎算法的運行速度.我愿意放棄Mcrypt來支持PHP原生解決方案或其他一些PHP擴展,只要這是很常見的做法,但是,不能在iOS端進行更改.

請幫忙!

解決方法:

分組密碼模式非常簡單,如果兩種實現方式不兼容,則可以自己實現.

php微盾解密。這是針對您的特定情況的點擊率實現:

function ctr_crypt($str, $key, $iv) {

$numOfBlocks = ceil(strlen($str) / 16);

$ctrStr = '';

php批量解密。for ($i = 0; $i < $numOfBlocks; ++$i) {

$ctrStr .= $iv;

// increment IV

for ($j = 0; $j < 16; ++$j) {

php加解密工具。$n = ord($iv[$j]);

if (++$n == 0x100) {

// overflow, set this one to 0, increment next

$iv[$j] = "\0";

php中文解謎?} else {

// no overflow, just write incremented number back and abort

$iv[$j] = chr($n);

break;

php aes加密?}

}

}

return $str ^ mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $ctrStr, MCRYPT_MODE_ECB);

php加密源碼?}

該算法非常簡單:您總是要追加IV并增加IV,直到擁有與輸入字符串相比更長(或相等長度)的字符串.然后,使用ECB模式對該字符串進行加密,然后將其與輸入字符串進行XOR運算.

在這里,增量是復雜的部分,因為我們正在處理二進制數.小尾數表示我們從左到右遞增(j = 0,j <16,j).大尾數將意味著我們從右向左遞增(j = 15,j> = 0,j--).

試試看:

$encrypted = base64_decode('MlNFlnXE1sqIsmKZRtjChBvUMgiJlXgdjHVxQJ6JK24Id4uaN9NK/nBtY+cgrMJR/PRJRCmIUx0boQO5XqJYZ8VJ0w==');

$key = base64_decode('HB+dD1Irj2rXQ/nO+IuqSiK9xVE3PD9cZGIGzrMtwtA=');

$iv = base64_decode('2gxxKYU/G4lj7174e5wj+g==');

var_dump(ctr_crypt($encrypted, $key, $iv));

// string(67) "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do..."

注意:ctr_crypt既可以用作加密功能,也可以用作解密功能.

標簽:commoncrypto,mcrypt,aes,cryptography,php

來源: https://codeday.me/bug/20191123/2066695.html

https://www.nshth.com/php/313066.html
>

相关文章:

  • openssl aes加密
  • php解密工具
  • php解密免費
  • mzphp解密
  • php源代碼解密
  • php微盾解密
  • php批量解密
  • php加解密工具
  • php建模,如何建模和跟蹤PHP中的目標需求
  • 數據結構的堆和內存的堆,堆在計算機中的作用,堆(數據結構)_百度百科
  • teamviewer設置固定ID和密碼,修改 TeamViewer ID 的方法
  • win7c盤擴展卷是灰色的,win7系統,網絡ID是灰色的。就是要看網絡工作組計算機的那個“網絡 ID”的那個按鈕。
  • docker 備份,django + MySQL + flup + Nginx 的一些相關配置文件的備份
  • 展現自己,第一次在我的P200上自己用rviz展現激光雷達數據
  • alab新內容實驗室,基于阿木實驗室P200飛行器simulink模型開發的多旋翼無人機自抗擾控制器(ADRC)參數調整和仿真
  • 田宮全內構飛機,P200四旋翼實踐
  • p1000和p2000性能差別,P101-P200
  • 蘋果電腦的高級使用技巧,Mac 上的一些騷操作和技巧
  • 如何在pdf中編輯文字,怎樣在PDF上直接編輯文字?這幾種編輯方法需要掌握
  • mysql數據庫課程設計,oracle學生考勤,Oracle數據庫課程設計――學生考勤系統的Oracle實現1
  • ssm框架,學生上課考勤系統jsp_jsp+ssm+mysql課堂考勤系統
  • ftp 下載文件,ftp免費下載工具,五大容易上手的ftp免費下載工具
  • 電腦上下載的文件從可以查看,從FTP上下載文件
  • 紅旗h5標志圖片,HTML5作業2繪畫h5標志
  • 打工的心酸經歷,[轉載]打工辛酸路:我是一朵飄零的花之81
  • 互聯網直播平臺架構案例一
  • 騰訊api接口,安卓Android中騰訊音視頻和直播 API的使用
  • 數字化字帖,數美文字點選驗證
  • 教師資格證面試時間表,Android 2018年九月面試經歷總結
  • 古注中的常用術語有哪些,統計中幾個常用術語一
  • 統計指標法,(五)統計分析基本算法
  • solidworks2020很卡,solidworks大型裝配體慢卡頓怎么辦?來看專業的裝配設計與仿真工作站是怎么解決的!
  • 通過條形圖你獲得了什么信息,小程序 - 條形圖畫法
  • matlab運算速度與電腦硬件,從MATLAB應用特點詳解科學計算工作站硬件配置(依據數據規模大小劃分)
  • visio畫折線,小程序 - 折線圖畫法
  • 程序bug,Bug整理
  • 市場市場營銷競爭策略有哪些,全球及中國智能Android電視行業競爭情況及營銷趨勢預測報告(2022-2027)
  • ipad怎么刪除軟件,怎么卸載手機上下載的軟件?蘋果手機有兩種方法