php descryptoserviceprovider,[WPF]C#和php实现DES加密和解密
加密解密的时候如果只传一个key值那么向量值默认跟key值一样
c#中实现加密和解密的类
Des.csusing System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace Ank.Class
{
class Des
{
加解密密钥
//private static string skey = "12345678";
初始化向量
//private static byte[] DESIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
#region DESEnCode DES加密
public static string EnCode(string pToEncrypt, string sKey, string sIv = null)
{
try
{
if (sKey.Length
{
sKey = sKey.PadRight(8, '0');
}
else
{
sKey = sKey.Substring(0, 8);
}
if (sIv == null)
{
sIv = sKey;
}
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);
//建立加密对象的密钥和偏移量
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
//使得输入密码必须输入英文文本
des.Key = Encoding.ASCII.GetBytes(sKey);
des.IV = Encoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return "";
}
}
#endregion
/// pToDecrypt待解密的字符串
/// sKey 解密密钥,要求为8字节,和加密密钥相同
/// returns 解密成功返回解密后的字符串,失败返源串
#region DESDeCode DES解密
public static string DeCode(string pToDecrypt, string sKey, string sIv = null)
{
try
{
if (sKey.Length
{
sKey = sKey.PadRight(8, '0');
}
else
{
sKey = sKey.Substring(0, 8);
}
if (sIv == null)
{
sIv = sKey;
}
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return "";
}
}
#endregion
}
}
php中进行加密解密的类class DES {
var $crypto = null;
var $key;
var $iv; //偏移量
function DES($key, $iv = null) {
//key长度8例如:1234abcd
$this->crypto = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC, '');
$key = substr($key, 0, 8);
if (is_null($iv)) {
$this->iv = $key; //mcrypt_create_iv(mcrypt_enc_get_iv_size($this->crypto), MCRYPT_DEV_URANDOM);
} else {
$this->iv = $iv;
}
$this->key = $key;
}
function encrypt($str) {
//加密,返回大写十六进制字符串
$size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$str = $this->pkcs5Pad($str, $size);
mcrypt_generic_init($this->crypto, $this->key, $this->iv);
$enc_question = mcrypt_generic($this->crypto, $str);
mcrypt_generic_deinit($this->crypto);
return strtoupper(bin2hex($enc_question));
}
function decrypt($str) {
//解密
$strBin = $this->hex2bin(strtolower($str));
mcrypt_generic_init($this->crypto, $this->key, $this->iv);
$str = mdecrypt_generic($this->crypto, $strBin);
mcrypt_generic_deinit($this->crypto);
$str = $this->pkcs5Unpad($str);
return $str;
}
function hex2bin($hexData) {
$binData = "";
for ($i = 0; $i
$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);
}
function __destruct() {
// mcrypt_generic_deinit($this->crypto);
mcrypt_module_close($this->crypto);
}
}
$str = "test string";
$key = '123412349';
$crypt = new DES($key);
$mstr = $crypt->encrypt($str);
echo "[ $str ]加密:[ $mstr ]
";
$str = $crypt->decrypt($mstr);
echo "[ $mstr ]解密:[ $str ]
";
php descryptoserviceprovider,[WPF]C#和php实现DES加密和解密相关推荐
- DES加密和解密工具Ⅰ
DES加密和解密工具Ⅰ 可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. 加密和解密代码: package com.ywx.test.security;import java.secu ...
- DES加密和解密工具(亲测可用)
可以指定不同的密钥进行加密操作,增强加密性能.加密和解密代码如下: package com.ywx.test.security; import java.security.Key; import ...
- DES加密和解密工具,可以对字符串进行加密和解密操作
DES加密和解密工具,可以对字符串进行加密和解密操作 import java.io.UnsupportedEncodingException;import java.security.Key;impo ...
- Java工具类——DES加密和解密工具 I
可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. package com.app; import java.security.Key; import java.security.Sec ...
- des加解密java c#,C#编写DES加密、解密类
这个C#类封装的DES加密解密,可以使用默认秘钥进行加密.解密,也可以自定义秘钥进行加密.解密,调用简单方便. 示例一: using System; using System.Security.Cry ...
- java和vb.net des加密_vb.net DES加密与解密
1.DES加密 Public Function EncryptDes(ByVal SourceStr As String, Optional ByVal myKey As String = " ...
- vb.net DES加密与解密
1.DES加密 Public Function EncryptDes(ByVal SourceStr As String, Optional ByVal myKey As String = " ...
- C# 使用DES加密,解密字符串
1 DES类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- DES——加密和解密
/// <summary> /// DES加密 /// </summary> /// <param name="value">要加密的字符串&l ...
最新文章
- CocosCreate粒子系统白边问题
- [转](传输层)UDP协议
- 对象的多态(核心、困难、重点)
- AVS软件解码器的优化
- html上传预览图片原理,关于html中图片上传预览的实现
- 深度学习和神经网络——第二周笔记
- HDU6292 赛题分析【水题】
- window平台下php连接Oracle
- Web前端学习-第一课JavaScript篇
- 上采样、下采样到底是什么?
- 【Visio】 windows Visio 画图
- Android文件下载
- z世代消费力白皮书_2019 Z世代消费力白皮书,洞悉2.6亿年轻人消费倾向
- 一时语噻:二面鹅厂,面试官问出Nginx你了解吗?
- 炒币的诱惑、安稳的生活
- 计算机大作业说明文档,计算机大作业.doc
- 线性回归、逻辑回归学习笔记
- uniapp商城前端源码下载/uniapp多店铺PHP商城源码下载
- Shader_GLSL、HLSL API异同对比
- 如何用python制作小游戏