在使用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加密遇到弱密钥的问题相关推荐

  1. java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...

    java 中32位秘钥长度的 3des加密方法? java 中 3des加密 默认是24位秘钥的 现在需求是 32位秘钥加密 尝试很多种方法 解决 结果都不正确 // 密钥 private final ...

  2. Java中3DES加密解密示例

    在java中调用sun公司提供的3DES加密解密算法时,需要使用到$JAVA_HOME/jre/lib/目录下如下的4个jar包: jce.jar security/US_export_policy. ...

  3. java c 3des_java中的3DES加密

    java中的3DES加密,上代码: package com.picc.custportrait.utils.decode; import java.io.ByteArrayOutputStream; ...

  4. java之php、Android、JAVA、C# 3DES加密解密

    异常如下 1.javax.crypto.BadPaddingException: Given final block not properly padded 1)要确认下是否加密和解密都是使用相同的填 ...

  5. 探讨.NET Core数据进行3DES加密和解密问题

    前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用 ...

  6. 探讨NET Core数据进行3DES加密或解密弱密钥问题

    [导读]之前写过一篇<探讨.NET Core数据进行3DES加密和解密问题>,最近看到有人提出弱密钥问题,换个强密钥不就完了吗,猜测可能是与第三方对接导致很无奈不能更换密钥,所以产生本文解 ...

  7. 怎样操作vue.js使用3DES加密

    如何在VUE-CLI手脚架建立的工程中使用3des加密: 1 npm install crypto-js --save-dev 1 import CryptoJS from 'crypto-js' 1 ...

  8. Des与3Des加密解密

    /// <summary>/// Des和3Des算法/// </summary>public class Des{/// <summary>/// Des加密// ...

  9. java的et5_Javascript与java相同的3des加密(使用etdesede/CBC/PKCS5Padding )

    在某个项目中,需要开发一个与native相对应的web前端app,后台用的是java restful接口,请求数据时需要用的3des加密.如果想要请求接口,则需要javascript的加密与java相 ...

  10. java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释

    Java使用3DES加密解密的流程 ①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象 SecretKey deskey = new Secret ...

最新文章

  1. Attack on Alpha-Zet
  2. Mysql8.0注意url变更写法
  3. postgresql介绍,安装,启动
  4. ISCC2020-Web题解
  5. static_const和reinterpret_cast
  6. 【笛卡尔树】【树状数组】Beautiful Pair(P4755)
  7. html如何在画布上加层,在Canvas中嵌套Html
  8. 常用Linux命令 mount df dd
  9. java supplier_现代化的 Java (二十一)——宏和生成宏
  10. vscode右键没有open in browser
  11. CVS常用命令速查手册
  12. WEB系统中集成控制扫描仪解决方案
  13. 微信小程序实时定位的要做的那些事,你学废了吗?(附示例)
  14. QT Creator 5.1.2中英文切换
  15. Linux——万字总结用户与组相关知识!建议收藏!
  16. MySQL - 全局锁、表级锁、行级锁、元数据锁、自增锁、意向锁、共享锁、独占锁、记录锁、间隙锁、临键锁、死锁
  17. 【校招内推】字节跳动2022提前批开启
  18. 张景明:方剂【方歌】——清热剂
  19. 零知识证明学习(三)—— 非交互式零知识证明(zkSNARKs)
  20. 23,verilog之参数parameter介绍

热门文章

  1. 25款有用的桌面版博客编辑器
  2. 推荐几个rpm下载站点
  3. 计算机术语hpp,HPP(计算机术语)_百度百科
  4. linux 17 中文输入,Rethat Linux Fedora17添加中文输入法
  5. nginx -- 负载均衡
  6. 以太网交换机工作原理
  7. springboot event线程池总结
  8. 来一杯java_初级java笔试题
  9. 课程《设计模式之美》笔记之关于面向对象与面向过程
  10. maven使用openjdk_openjdk8指定版本安装(maven指定版本安装)