PHP与C sharp互解加密算法
生活随笔
收集整理的這篇文章主要介紹了
PHP与C sharp互解加密算法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
前同事,在網(wǎng)上拷貝一個PHP加解密算法(具體出處也不知道在哪里呢)
用于微信注冊加密openid,現(xiàn)在這邊一新同事(.net同事)重構(gòu)微信開發(fā),要傳遞openid過來。要模擬PHP的算法重寫一個。中間主要出現(xiàn)的問題php的chr與c#的chr解析不一樣,轉(zhuǎn)換幾次也不行,,md5也要重構(gòu)一下,最后由.net大牛搞定。記錄一下,方便后面使用?
PHP加密碼與解密代碼如下:
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("=",?"");}}轉(zhuǎn)載于:https://my.oschina.net/lockupme/blog/663764
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的PHP与C sharp互解加密算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MS-SQL CLR 扩展函数包 CLR
- 下一篇: 除夕说说心情短语176个