.net中使用TripleDESCryptoServiceProvider进行3DES加密遇到弱密钥的问题
在使用TripleDESCryptoServiceProvider进行3DES加密的时候,使用16byte全F的密钥,抛出异常,提示弱密钥,但是该密钥是由上游厂商提供不能随意修改。因此只能想办法屏蔽掉弱密钥检查,即让isWeakKey方法返回false。
有2种解决方法:
一是重写TripleDESCryptoServiceProvider,虽然网上有现成的源码,但还是太麻烦。
二是利用.net的反射机制,手动创建ICryptoTransform实例,绕过.net自身的弱密钥检查,代码如下:
Public Function Encrypt3DES(ByVal strString As String, ByVal strKey As String) As String'密文Dim destStr As String = ""'3DES加密对象Dim DES As TripleDESCryptoServiceProvider = New TripleDESCryptoServiceProvider()'初始向量Dim Iv() As Byte = {&H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0}'密钥Dim Key() As Byte = format.HexStringToByteArray(strKey)Dim mi As MethodInfo = DES.GetType().GetMethod("_NewEncryptor", BindingFlags.NonPublic Or BindingFlags.Instance)Dim param() As Object = {Key, CipherMode.CBC, Iv, DES.FeedbackSize, 0}Dim DESEncrypt As ICryptoTransform = CType(mi.Invoke(DES, param), ICryptoTransform)'明文的byte[]形式Dim Buffer() As Byte = format.HexStringToByteArray(strString)'加密得到密文的byte[]形式Dim tmpStr() As Byte = DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length)'将密文转为可见字符destStr = format.ByteArrayToHexString(tmpStr)Encrypt3DES = destStrEnd Function
转载于:https://www.cnblogs.com/chenguanwei/archive/2011/01/07/1929494.html
.net中使用TripleDESCryptoServiceProvider进行3DES加密遇到弱密钥的问题相关推荐
- java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...
java 中32位秘钥长度的 3des加密方法? java 中 3des加密 默认是24位秘钥的 现在需求是 32位秘钥加密 尝试很多种方法 解决 结果都不正确 // 密钥 private final ...
- Java中3DES加密解密示例
在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包: jce.jar security/US_export_policy. ...
- java c 3des_java中的3DES加密
java中的3DES加密,上代码: package com.picc.custportrait.utils.decode; import java.io.ByteArrayOutputStream; ...
- java之php、Android、JAVA、C# 3DES加密解密
异常如下 1.javax.crypto.BadPaddingException: Given final block not properly padded 1)要确认下是否加密和解密都是使用相同的填 ...
- 探讨.NET Core数据进行3DES加密和解密问题
前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用 ...
- 探讨NET Core数据进行3DES加密或解密弱密钥问题
[导读]之前写过一篇<探讨.NET Core数据进行3DES加密和解密问题>,最近看到有人提出弱密钥问题,换个强密钥不就完了吗,猜测可能是与第三方对接导致很无奈不能更换密钥,所以产生本文解 ...
- 怎样操作vue.js使用3DES加密
如何在VUE-CLI手脚架建立的工程中使用3des加密: 1 npm install crypto-js --save-dev 1 import CryptoJS from 'crypto-js' 1 ...
- Des与3Des加密解密
/// <summary>/// Des和3Des算法/// </summary>public class Des{/// <summary>/// Des加密// ...
- java的et5_Javascript与java相同的3des加密(使用etdesede/CBC/PKCS5Padding )
在某个项目中,需要开发一个与native相对应的web前端app,后台用的是java restful接口,请求数据时需要用的3des加密.如果想要请求接口,则需要javascript的加密与java相 ...
- java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释
Java使用3DES加密解密的流程 ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象 SecretKey deskey = new Secret ...
最新文章
- Attack on Alpha-Zet
- Mysql8.0注意url变更写法
- postgresql介绍,安装,启动
- ISCC2020-Web题解
- static_const和reinterpret_cast
- 【笛卡尔树】【树状数组】Beautiful Pair(P4755)
- html如何在画布上加层,在Canvas中嵌套Html
- 常用Linux命令 mount df dd
- java supplier_现代化的 Java (二十一)——宏和生成宏
- vscode右键没有open in browser
- CVS常用命令速查手册
- WEB系统中集成控制扫描仪解决方案
- 微信小程序实时定位的要做的那些事,你学废了吗?(附示例)
- QT Creator 5.1.2中英文切换
- Linux——万字总结用户与组相关知识!建议收藏!
- MySQL - 全局锁、表级锁、行级锁、元数据锁、自增锁、意向锁、共享锁、独占锁、记录锁、间隙锁、临键锁、死锁
- 【校招内推】字节跳动2022提前批开启
- 张景明:方剂【方歌】——清热剂
- 零知识证明学习(三)—— 非交互式零知识证明(zkSNARKs)
- 23,verilog之参数parameter介绍