c# php加解密,PHP和C#可共用的可逆加密算法详解

在一些项目中要求在php中生成加密,然后在asp.net中接受过来的密码再解密,下面和大家分享一个PHP与asp.net C#可共用的可逆加密算法,感兴趣的可以参考参考。

php加密算法:

class DES

{

var $key;

var $iv; //偏移量

function DES($key = '11001100', $iv=0 ) {

//key长度8例如:1234abcd

$this->key = $key;

if( $iv == 0 ) {

$this->iv = $key; //默认以$key 作为 iv

} else {

$this->iv = $iv; //mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM );

}

}

function encrypt($str) {

//加密,返回大写十六进制字符串

$size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );

$str = $this->pkcs5Pad ( $str, $size );

return strtoupper( bin2hex( mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) );

}

function decrypt($str) {

//解密

$strBin = $this->hex2bin( strtolower( $str ) );

$str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv );

$str = $this->pkcs5Unpad( $str );

return $str;

}

function hex2bin($hexData) {

$binData = "";

for($i = 0; $i < strlen ( $hexData ); $i += 2) {

$binData .= chr ( hexdec ( substr ( $hexData, $i, 2 ) ) );

}

return $binData;

}

function pkcs5Pad($text, $blocksize) {

$pad = $blocksize - (strlen ( $text ) % $blocksize);

return $text . str_repeat ( chr ( $pad ), $pad );

}

function pkcs5Unpad($text) {

$pad = ord ( $text {strlen ( $text ) - 1} );

if ($pad > strlen ( $text ))

return false;

if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad)

return false;

return substr ( $text, 0, - 1 * $pad );

}

}

?>

asp.net程序代码:

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Security.Cryptography;

using System.Text;

namespace WindowsFormsApplication1

{

///

/// DES加密解密字符串

///

public class DesEncryption

{

///

/// DES加密字符串

///

/// 待加密的字符串

/// 加密密钥,要求为8位

/// 加密成功返回加密后的字符串,失败返回null

public static string EncryptDES(string encryptString, string encryptKey = "11001100")

{

try

{

byte[] rgbKey = ASCIIEncoding.ASCII.GetBytes(encryptKey.Substring(0, 8));

byte[] rgbIV = rgbKey;

byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);

DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();

MemoryStream mStream = new MemoryStream();

CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

cStream.Write(inputByteArray, 0, inputByteArray.Length);

cStream.FlushFinalBlock();

StringBuilder ret = new StringBuilder();

foreach (byte b in mStream.ToArray())

{

ret.AppendFormat("{0:X2}", b);

}

ret.ToString();

return ret.ToString();

}

catch

{

return null;

}

}

///

/// DES解密字符串

///

/// 待解密的字符串

/// 解密密钥,要求为8位,和加密密钥相同

/// 解密成功返回解密后的字符串,失败返回null

public static string DecryptDES(string decryptString, string decryptKey = "11001100")

{

try

{

byte[] rgbKey = ASCIIEncoding.ASCII.GetBytes(decryptKey);

byte[] rgbIV = rgbKey;

byte[] inputByteArray = new byte[decryptString.Length / 2];

for (int x = 0; x < decryptString.Length / 2; x++)

{

int i = (Convert.ToInt32(decryptString.Substring(x * 2, 2), 16));

inputByteArray[x] = (byte)i;

}

DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();

MemoryStream mStream = new MemoryStream();

CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

cStream.Write(inputByteArray, 0, inputByteArray.Length);

cStream.FlushFinalBlock();

return Encoding.UTF8.GetString(mStream.ToArray());

}

catch

{

return null;

}

}

}

}

以上就是PHP和C#可共用的可逆加密算法,希望对大家的学习有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器人也需要拥有属于自己的性格

原作者&#xff1a;STEPH HAY, CAPITAL ONE译者&#xff1a;彭婷概要&#xff1a;建立信任最有效的方法之一就是在你的每一次互动中始终如一地展示你的人格的完整性。现实生活中是如此&#xff0c;在AI中也是如此。对话设计师Mindy Gold曾经设计出一款没有明确名称以及性别的健…

php中英文字符串长度,php 计算中英文混合字符串的长度

php 计算中英文混合字符串的长度echo ccStrLen($str),;echo ccStrLeft($str,3);function ccStrLeft($str,$len) #从左边截取中英文混合字符串{$ascLenstrlen($str); if($ascLen<$len) return $str;$hasCCereg("[xA1-xFE]",$str); #同上$hasAscereg("[x01-x…

IBM Watson 的中国生意

来源&#xff1a;财经杂志概要&#xff1a;鉴于过往&#xff0c;IBM的此次转型更具深意。这家巨头公司此次转型的任务是&#xff0c;业务架构要从软件硬件服务&#xff0c;转变为云认知行业。IBM的这场转型尚未到最终评定是否成功的阶段&#xff0c;但新的业务组合收入如果超过…

java 包含汉字,java判断字符串中是否包含汉字

java判断字符串中是否包含汉字package com.zuidaima.util;/**[email protected] www.zuidaima.com**/public class test {public static void main(String[] args) {String a "中国China";for (int ia.length(); --i>0;) {String b a.substring(i, i1);boolean …

2013-2017:中国 CV(计算机视觉)公司恩仇录

来源&#xff1a;KnowingAI知智概要&#xff1a;这是属于中国 CV&#xff08;计算机视觉&#xff09;公司的五年&#xff0c;这是属于他们的时代。2013 年新广告法还没实行&#xff0c;旷视科技为 Face 写下文案&#xff1a;「最好的人脸识别云计算平台」。2014 年是「格灵深瞳…

git php自动发布,使用 Git Hooks 实现自动部署PHP项目

最近正在寻找一种简便的自动部署代码到服务器的方式&#xff0c;然后就发现了git hooks这个方法&#xff0c;查了一些资料再自己尝试过后&#xff0c;觉得还不错&#xff0c;记录下。什么是git hooks在git上是这么介绍的&#xff1a;和其它版本控制系统一样&#xff0c;Git能在…

matlab读取时间数据,Matlab有关数据库读取及时间项的设定

Matlab有关数据库的读取需下载mysql-connector-java-5.1.26-bin.jar文件放到指定位置&#xff0c;并修改classpath.txt相关文件&#xff0c;具体可网上自行查找。看一下实例&#xff1a;conndatabase(‘photo‘, ‘root‘, ‘123321‘, ‘com.mysql.jdbc.Driver‘, ‘jdbc:mysq…

GAN还有这种操作!谷歌大脑和X实验室利用模拟条件和域适应提高机器抓取效率(附论文)

来源&#xff1a;机器人圈作者&#xff1a;Coogle Brain&#xff0c;Google X概要&#xff1a;相信大家都知道&#xff0c;通过检测和采集带有注释的视觉抓取数据集来训练现代机器学习算法可以说是非常耗时、昂贵的。相信大家都知道&#xff0c;通过检测和采集带有注释的视觉抓…

java gui 打开另一个,java – 从另一个JFrame Gui访问vars

好的,我已根据您的说法对我的代码进行了一些更改.我有3个班&#xff1a;第二类(和第一个GUI)&#xff1a;我有4个JButton – Simulare,CazParticular,Start和HandSelection,一些JLabel和3个JTextField;当我按下HandSelection按钮时,另一个框架会创建不同的内容.第三类(和第二个…

英伟达的雄心:成为AI时代的计算平台

9 月 26 日&#xff0c;NVIDIA英伟达在北京举行GTC大会&#xff0c;NVIDIA 创始人兼首席执行官黄仁勋在演讲中展示了能够加快人工智能大规模采用速度的全新技术&#xff0c;并介绍了为云服务商、电商和智慧城市提供的各项计算平台服务。发布AI 推理软件TensorRT 3&#xff1a;可…

lc filter在matlab哪,基于python实现matlab filter函数过程详解

matlab中的filter函数&#xff1a;y filter(b,a,x)python实现matlab中的filter函数def filter_matlab(b,a,x):y []y.append(b[0] * x[0])for i in range(1,len(x)):y.append(0)for j in range(len(b)):if i > j :y[i] y[i] b[j] * x[i - j ]j 1for l in range(len(b)-1…

php多商户限时抢购,GitHub - 617746883/thinkphp5.0_shop: 基于thinkphp5,多商户商城。积分商城、团购、秒杀、拍卖、夺宝等多插件(持续开发中)...

SUL1SS_shopAuthor:SUL1SSEmail:617746883qq.com简介与现状自营多商户上传管理后台api接口核心功能组件化积分商城预计后续实现功能:团购、拍卖、秒杀、夺宝等插件。客户端-web手机端将采用vue搭建脚手架框架。由于个人能力有限&#xff0c;所以应用的代码在有些地方设计可能存…

Gartner公布云计算市场排位:亚马逊微软阿里前三

来源&#xff1a;网易科技概要&#xff1a;Gartner认为&#xff0c;亚马逊、微软和阿里云三大巨头引领了增长&#xff0c;预估IaaS、PaaS和SaaS的5年增长分别为28%、22%和19%。9月27日&#xff0c;美国权威研究机构Gartner发布2016年全球公共云市场份额报告&#xff0c;全球云计…

matlab设置固定的窗宽窗位,python实现CT窗宽窗位的调整(即指定HU值保存图像)...

最近一直在做实验&#xff0c;所以好久没有更新了&#xff0c;先把上周做的一些小的实验贴出来供大家分享。在医生诊断时&#xff0c;是会将CT图像调整成不同的窗来处理的。比如说肺部CT吧&#xff0c;肺窗(窗宽为2000&#xff0c;窗位为-400)用于看小的肺结节&#xff1b;腹部…

重磅 | 周志华最新论文:首个基于决策树集成的自动编码器,表现优于DNN

来源&#xff1a; AI科技大本营概要&#xff1a;深度神经网络需要花大力气调参&#xff0c;相比之下 gcForest 要容易训练得多。此外&#xff0c;深度神经网络需要大规模的训练数据&#xff0c;而 gcForest 在仅有小规模训练数据的情况下也照常运转。今年 2 月&#xff0c;南京…

adv是php系统标签,whatsns开源php系统网站SEO优化之网站首页,问题详情,文章详情,标签详情,栏目详情TDK优...

网站首页优化TDK可以进入后台&#xff0c;系统设置--站点设置中&#xff0c;设置网站首页别名官方首页名称优化--长尾关键词【whatsns知识库开源内容付费php问答系统】&#xff0c;这样百度搜索问答系统&#xff0c;开源php问答系统&#xff0c;php问答系统&#xff0c;付费问答…

MIT联合波士顿咨询:全球21个行业,对话3000名高管,AI如何重塑商业形态? | 雷报

来源&#xff1a;雷锋网概要&#xff1a;目前只有14%的调查对象认为&#xff0c;AI对他们现在的产品或服务已经有了很大的影响。但对于5年后的情况&#xff0c;这一比例上升到63%。人工智能已经成了一个新的风口&#xff0c;人人都在谈论人工智能&#xff0c;但是&#xff0c;企…

pay.onzan.en app.php,IBOS 协同办公平台PHP版 v1.0

/** 基于本地数据拼音匹配引擎* Version 0.3 简体中&#xfffd;?繁体中文* Date: 2011-09-19* 链接已屏蔽* (c) 2009-2010 TangBin, 链接已屏蔽** This is licensed under the GNU LGPL, version 2.1 or later.* For details, see: http://creativecommons.org/licenses/LGPL…

智能体到底是什么?这里有一篇详细解读

来源&#xff1a;机器人圈概要&#xff1a;根据我们希望实现的目标以及衡量其成功的标准&#xff0c;我们可以采用多种方法来创建人工智能。根据我们希望实现的目标以及衡量其成功的标准&#xff0c;我们可以采用多种方法来创建人工智能。它涵盖的范围极其广泛&#xff0c;从自…

人类PK机器:人工神经网络和生物神经网络的比较

原文作者&#xff1a;MADELINESCHIAPPA译者&#xff1a;李凌概要&#xff1a;通过对生物学习与人工智能进行的比较&#xff0c;我们可以建立一个更安全的基础设施系统。 通过对生物学习与人工智能进行的比较&#xff0c;我们可以建立一个更安全的基础设施系统。 本文由Sophos的…