PHP版:

$key = 335ff';

/*
* 加密方法
* @param string $input,待加密的字符串
* @param string $key,加密的密码(只能为8位长)
* @return string,加密之后的文本
* */

public static function encryptForDotNet($input, $key) {
$iv = $key;

$addnum = 8 - ( strlen($input) % 8 );
for ($i = 0; $i < $addnum; $i++) {
$input .= chr($addnum);
}

$output = mcrypt_encrypt(MCRYPT_DES, $key, $input, MCRYPT_MODE_CBC, $iv);
return base64_encode($output);
}

/*
* 解密方法
* @param string $input,待解密的字符串
* @param string $key,解密的密码(只能为8位长)
* @return string,解密之后的文本
* */

public static function decryptForDotNet($input, $key) {
$iv = $key;
$output = base64_decode($input);
$output = mcrypt_decrypt(MCRYPT_DES, $key, $output, MCRYPT_MODE_CBC, $iv);

for ($i = 0; $i <= 8; $i++) {
$output = str_replace(chr($i), "", $output);
}

return $output;
}

C#版:

password = 'isso_key';

/// <summary>
/// 加密方法
/// </summary>
/// <param name="input">待加密的字符串</param>
/// <param name="password">加密的密码(只能为8位长)</param>
/// <param name="encoding">编码方式</param>
/// <returns>加密之后的文本</returns>
public static string Encrypt(string input, string password, Encoding encoding = null)
{
encoding = encoding ?? Encoding.Default;
//注意iv的长度,必须和key中的密码长度相同
var iv = encoding.GetBytes(password);
var key = encoding.GetBytes(password);
var datas = encoding.GetBytes(input);
var desCryptoServiceProvider = new DESCryptoServiceProvider();
using (var memoryStream = new MemoryStream())
{
using (
var cryptoStream = new CryptoStream(memoryStream, desCryptoServiceProvider.CreateEncryptor(iv, key),
CryptoStreamMode.Write))
{
cryptoStream.Write(datas, 0, datas.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memoryStream.ToArray());
}
}
}

/// <summary>
/// 解密方法
/// </summary>
/// <param name="input">待解密的字符串</param>
/// <param name="password">加密时用的密码(只能为8位长)</param>
/// <param name="encoding">编码方式</param>
/// <returns>解密之后的文本</returns>
public static string Decrypt(string input, string password, Encoding encoding = null)
{
encoding = encoding ?? Encoding.Default;
var iv = encoding.GetBytes(password);
var key = encoding.GetBytes(password);
var datas = Convert.FromBase64String(input);
var desCryptoServiceProvider = new DESCryptoServiceProvider();
using (var memoryStream = new MemoryStream())
{
using (
var cryptoStream = new CryptoStream(memoryStream, desCryptoServiceProvider.CreateDecryptor(iv, key),
CryptoStreamMode.Write))
{
cryptoStream.Write(datas, 0, datas.Length);
cryptoStream.FlushFinalBlock();
return encoding.GetString(memoryStream.ToArray());
}
}
}

php和.net 的加密解密的更多相关文章

  1. PHP的学习--RSA加密解密

    PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...

  2. 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输

    Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...

  3. .NET和JAVA中BYTE的区别以及JAVA中“DES/CBC/PKCS5PADDING” 加密解密在.NET中的实现

    场景:java 作为客户端调用已有的一个.net写的server的webservice,输入string,返回字节数组. 问题:返回的值不是自己想要的,跟.net客户端直接调用总是有差距 分析:平台不 ...

  4. php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密

    PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加 ...

  5. c#和js互通的AES加密解密

    一.使用场景 在使用前后端分离的框架中常常会进行传输数据相互加密解密以确保数据的安全性,如web Api返回加密数据客户端或web端进行解密,或者客户端或web端进行加密提交数据服务端解密数据等等. ...

  6. PHP AES的加密解密

    AES加密算法 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  7. [PHP]加密解密函数

    非常给力的authcode加密函数,Discuz!经典代码(带详解) function authcode($string, $operation = 'DECODE', $key = '', $exp ...

  8. 非对称技术栈实现AES加密解密

    非对称技术栈实现AES加密解密 正如前面的一篇文章所述,https协议的SSL层是实现在传输层之上,应用层之下,也就是说在应用层上看到的请求还是明码的,对于某些场景下要求这些http请求参数是非可读的 ...

  9. 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解

    原文地址:http://docode.top/Article/Detail/10003 目录: 1..Net(C#)平台下Des加密解密源代码 2..Net(C#)平台下Aes加密解密源代码 3..N ...

  10. .Net(c#)加密解密之Aes和Des

    .Net(c#)加密解密工具类: /// <summary> /// .Net加密解密帮助类 /// </summary> public class NetCryptoHelp ...

随机推荐

  1. android boot.img 结构

    android 的boot.img 包括 boot header,kernel, ramdisk 首先来看看Makefile是如何产生我们的boot.img的: boot镜像不是普通意义上的文件系统, ...

  2. PHP开发调优clockwork工具

    clockwork对于曾经做过C,c++代码调优的工程师并不会陌生,它可以指出代码中的潜在问题,比如内存泄漏,数组越界等.他也可以做profiler动作,指出系统各个函数的执行时间,性能瓶颈到底在哪里 ...

  3. 如何在linux console中显示当前你在的branch?

    http://stackoverflow.com/questions/17333531/how-can-i-display-the-current-branch-and-folder-path-in- ...

  4. CSS之可收缩的底部边框

    简述 <div>用来定义文档中的分区或节,<span>用来组合文档中的行内元素.我们可以通过<div>和 <span>将HTML元素组合起来. 下面我们 ...

  5. sass 常用函数的整理

    @charset "utf-8"; @import "compass/css3/inline-block"; @import "compass/css ...

  6. SQL group by分组查询(转)

    本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳 ...

  7. HR免费选人的网站乐跳网上线

    园子里有HR吗? 我们的免费选人的网站乐跳网(http://www.letiao.com)上线了, 免费选人在精英人才榜(http://www.letiao.com/talentwall) 有面试,奖 ...

  8. WEBUS2.0 In Action - 搜索操作指南 - (1)

    上一篇:WEBUS2.0 In Action - 索引操作指南(2) | 下一篇:WEBUS2.0 In Action - 搜索操作指南(2) 1. IQueriable中内置的搜索功能 在Webus ...

  9. 机器学习(二)——K-均值聚类(K-means)算法

    最近在看<机器学习实战>这本书,因为自己本身很想深入的了解机器学习算法,加之想学python,就在朋友的推荐之下选择了这本书进行学习,在写这篇文章之前对FCM有过一定的了解,所以对K均值算 ...

  10. jq的post传递数组

    a = new Object();            b = new Object();            a['你好[眼见]'] = "y";            a[ ...