日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP与C sharp互解加密算法

發布時間:2023/12/31 php 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP与C sharp互解加密算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

前同事,在網上拷貝一個PHP加解密算法(具體出處也不知道在哪里呢)

用于微信注冊加密openid,現在這邊一新同事(.net同事)重構微信開發,要傳遞openid過來。要模擬PHP的算法重寫一個。中間主要出現的問題php的chr與c#的chr解析不一樣,轉換幾次也不行,,md5也要重構一下,最后由.net大牛搞定。記錄一下,方便后面使用?

PHP加密碼與解密代碼如下:

function?_Encrypt($string,$operation,$key=''){$key=md5($key);$key_length=strlen($key);$string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;$string_length=strlen($string);$rndkey=$box=array();$result='';for($i=0;$i<=255;$i++){$rndkey[$i]=ord($key[$i%$key_length]);$box[$i]=$i;}for($j=$i=0;$i<256;$i++){$j=($j+$box[$i]+$rndkey[$i])%256;$tmp=$box[$i];$box[$i]=$box[$j];$box[$j]=$tmp;}for($a=$j=$i=0;$i<$string_length;$i++){$a=($a+1)%256;$j=($j+$box[$a])%256;$tmp=$box[$a];$box[$a]=$box[$j];$box[$j]=$tmp;$result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));}if($operation=='D'){if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){return?substr($result,8);}else{return'';}}else{return?str_replace('=','',base64_encode($result));}}

C#代碼如下:

??public?static?string?Md5(string?str){byte[]?b?=?Encoding.UTF8.GetBytes(str);b?=?new?MD5CryptoServiceProvider().ComputeHash(b);string?ret?=?string.Empty;for?(int?i?=?0;?i?<?b.Length;?i++){ret?+=?b[i].ToString("x").PadLeft(2,?'0');}return?ret;}public?static?string?Encrypt(string?str,?char?operation,?string?key){key?=?Md5(key);var?key_length?=?key.Length;str?=?operation?==?'D'???Encoding.UTF8.GetString(Convert.FromBase64String(str))?:?Md5(str?+?key).Substring(0,?8)?+?str;var?string_length?=?str.Length;var?rndkey?=?new?int[256];var?box?=?new?int[256];var?lstResult?=?new?List<byte>();for?(int?i?=?0;?i?<=?255;?i++){rndkey[i]?=?Convert.ToInt32(key[i?%?key_length]);box[i]?=?i;}for?(int?j?=?0,?i?=?0;?i?<?256;?i++){j?=?(j?+?box[i]?+?rndkey[i])?%?256;var?tmp?=?box[i];box[i]?=?box[j];box[j]?=?tmp;}for?(int?a?=?0,?j?=?0,?i?=?0;?i?<?string_length;?i++){a?=?(a?+?1)?%?256;j?=?(j?+?box[a])?%?256;var?tmp?=?box[a];box[a]?=?box[j];box[j]?=?tmp;var?ord?=?Convert.ToInt32(((Convert.ToInt32(str[i]))?^?(box[(box[a]?+?box[j])?%?256])));lstResult.Add((byte)ord);}if?(operation?==?'D'){//if?(result.Substring(0,?8)?==?Md5(result.Substring(8)?+?key).Substring(0,?8))//{//????return?result.Substring(8);//}//else//{return?"暫不考慮解密";//}}else{return?Convert.ToBase64String(lstResult.ToArray()).Replace("=",?"");}}


轉載于:https://my.oschina.net/lockupme/blog/663764

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的PHP与C sharp互解加密算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。