当前位置:首页 > 计算机相关 > .net专区 > 正文内容

python和C# 的DES3加密通信

piikee4年前 (2019-11-20).net专区888

python和C#的兼容DES3通讯,triple des 通用C#和python。C#和python的兼容加密通讯方式

C# DES3加密模块:

 public static string Encrypt(string text, string iv, string key)//要加密的内容,IV,KEY
{
try
{
var provider = new DESCryptoServiceProvider
{
Key = Encoding.UTF8.GetBytes(key),
IV = Encoding.UTF8.GetBytes(iv)
};
var bytes = Encoding.UTF8.GetBytes(text);
using (var memoryStream = new MemoryStream())
{
using (var cryptoStream = new CryptoStream(memoryStream, provider.CreateEncryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(bytes, 0, bytes.Length);
cryptoStream.FlushFinalBlock();
var builder = new StringBuilder();
foreach (var num in memoryStream.ToArray())
{
builder.AppendFormat("{0:x2}", num);
}
return builder.ToString();
}
}
}
catch (Exception)
{
return null;
}
}

C# DES3解密模块:

    public static string Decrypt(string text, string iv, string key)//要加密的内容,IV,KEY
{
var provider = new DESCryptoServiceProvider
{
Key = Encoding.UTF8.GetBytes(key),
IV = Encoding.UTF8.GetBytes(iv)
};
var buffer = new byte[text.Length / 2];
for (var i = 0; i < text.Length / 2; i++)
{
var num2 = Convert.ToInt32(text.Substring(i * 2, 2), 0x10);
buffer[i] = (byte)num2;
}
using (var memoryStream = new MemoryStream())
{
using (var cryptoStream = new CryptoStream(memoryStream, provider.CreateDecryptor(), CryptoStreamMode.Write))
{
cryptoStream.Write(buffer, 0, buffer.Length);
cryptoStream.FlushFinalBlock();
return Encoding.UTF8.GetString(memoryStream.ToArray());
}
}
}

python DES3加密模块:

 
import pyDes
k = pyDes.des(key, pyDes.CBC,iv, pad=None, padmode=pyDes.PAD_PKCS5)
oktext=k.encrypt(text)

python DES3解密模块:

 
import pyDes
k = pyDes.des(key, pyDes.CBC,iv, pad=None, padmode=pyDes.PAD_PKCS5)
oktext=k.decrypt(text)

扫描二维码推送至手机访问。

版权声明:本文由萍客小居发布,如需转载请注明出处。

本文链接:https://www.piikee.net/1364.html

分享给朋友:

相关文章

让SQL Server2005允许远程连接

在尝试从远程计算机连接到 Microsoft SQL Server 2005 实例时,可能会接收到错误消息。在使用任何程序连接到 SQL Server 时都可能会发生此问题。例如,在使用 SQLCMD 实用工具连接到 SQL Server...

SQL 2005中设置两个主键的方法

SQL2005中,可视化见表,选中一行设置主键,然后再选一行设置主键,则刚才设置的主键就自动取消了。怎么设置两个主键呢。其实Windows中很多东西都是融会贯通的,想一想多选的Ctrl键不就解决了~ 按住Ctrl,用鼠标选两个行,然后右键,...

C#泛型的好处

关于object类型:1.object类型可以来引用任何类型的实例;2.object类型可以存储任何类型的值;3.可以定义object类型的参数;4.可以把object作为返回类型。但是--这样做有很大的问题1.会因为程序员没有记住使用的类...

C#的窗体(WinForm)退出杂谈

1、Winform点击退出按钮,需要确认再退出:private void MainForm_FormClosing(object sender, FormClosingEventArgs e){if (MessageBox.Show("是否...

SQL2005服务无法启动,错误代码3417的终极解决办法

sql2005,在服务管理里面启动sql的服务报出错误代码3417的错误。错误框提示为:“Windows不能在 本地计算机 启动 SQL Server(MSSQLSERVER)。有关更多信息,查阅系统事件日志。如果这是非Microsoft...

div中英文无法自动换行的解决办法

问题:在一个设定好宽度的div中,当我们输入的中文文字长度超过了设定宽度时,会自动换到下一行。但是,如果输入的是英文字母,那么,无论你div设定宽度为多少,英文字母都是不换行直接在同一行输出,导致div的宽度远远超出设定的大小。原因:这是因...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。