zoukankan      html  css  js  c++  java
  • 如何让vba与java的TripleDES算法通用

    本文链接:http://www.cnblogs.com/Charltsing/p/TripleDES.html

    众所周知,java默认采用的TripleDES算法是ECB+PKCS#5填充方式。网上可以找到的vb6算法与这个不兼容。

    有没有简便的方法实现两者之间的通用呢?

    大家知道,C#是可以实现TripleDES算法的,所以可以在vba、vbs、vb6.0中调用.net的静态类来实现与java通用的加解密算法。

    在vba中调用C#的 TripleDESCryptoServiceProvider,并设置Mode = CipherMode.ECB即可。

    如果有其他问题,可以联系QQ564955427

    ***************************************************************************************************

    需要注意的是,C#默认支持的是PKCS#7填充模式,在默认情况下和PKCS#5的填充是通用的,具体看下面的文字:

    通过研读参考资料下面的参考资料可以发现两者定义的区别:
    [Def] PKCS #7: Cryptographic Message Syntax Standard,
    An RSA Laboratories Technical Note, Version 1.5. Revised November 1, 1993. http://www.cnblogs.com/midea0978/admin/ftp://ftp.rsa.com/pub/pkcs/ascii/pkcs-7.asc
    [Inf] PKCS #5: Password-Based Encryption Standard,
    An RSA Laboratories Technical Note, Version 1.5. Revised November 1, 1993. http://www.cnblogs.com/midea0978/admin/ftp://ftp.rsa.com/pub/pkcs/ascii/pkcs-5.asc
    在PKCS5Padding中,明确定义Block的大小是8位,而在PKCS7Padding定义中,对于块的大小是不确定的,可以在1-255之间(块长度超出255的尚待研究),填充值的算法都是一样的:
    value=k - (l mod k)  ,K=块大小,l=数据长度,如果l=8, 则需要填充额外的8个byte的8
    在.net中,例如TripleDESCryptoServiceProvider ,默认BlockSize=64bits=8bytes,所以在这种情况下在PKCS5Padding=PKCS7Padding。
    如果在C#中自己定义了一个不是64bits的加密块大小,同时使用PKCS7Padding,那么在java中使用JDK标准的PKCS5Padding就不能解密了。

  • 相关阅读:
    weblogic10配置JNDI须在JDK1.5上
    JDBC大批量写入数据到SQLServer2000,记录数大于10000
    ASP递归调用:已知节点查找根节点的函数
    window.createPopup()
    Hibernate处理同名实体的方法
    windows下Apache Rewrite .htaccess 设置
    使用jsonlib将java对象转换成json字符串
    关于oracle和jdbc中rowid格式的转化
    [转]MaCfee导致Asp.net/Jmail无法发送邮件的解决办法
    javascript监测(控制 )上传文件大小
  • 原文地址:https://www.cnblogs.com/Charltsing/p/TripleDES.html
Copyright © 2011-2022 走看看