知识大全 论Java加密技术与Windows的结合
Posted 知
篇首语:人的大脑和肢体一样,多用则灵,不用则废。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 论Java加密技术与Windows的结合相关的知识,希望对你有一定的参考价值。
论Java加密技术与Windows的结合 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
论Java加密技术与Windows的结合 作者:独行客 公共钥匙加密技术需要一个空间来存储数字证书和私钥 通过将钥匙和证书存储到一个文件中(称为keystore) Java Security Architecture实现了独立于平台的加密技术 Microsoft Windows把钥匙和证书存储到Windows注册表和文件系统中 这就是说 在Windows系统上运行安全的Java程序的用户必须在Java和Microsoft的钥匙和证书库之间输入和输出钥匙和证书 好消息是 你可以 哄骗 Java应用程序通过Microsoft本地函数来运用Microsoft的证书和钥匙库 通过将你的Java应用程序同Windows 钥匙/证书库结合起来 你虽然牺牲了平台独立姓 但你得到了四个好处 减少了管理和支持的成本 更方便用户使用 更好的证书撤消校验 以及更好的钥匙和证书管理工具 一个Java程序必须通过四个不同的类实现与Windows加密术的集成 · TrustManager Provider 用这个类来实现与Windows证书库的集成并实现安全策略 · KeyManager Provider 用这个类来实现与Windows私钥库的集成 · RSA Signature Provider 数字签名需要访问私钥库 如果Java程序不能读取私钥(比如 如果私钥存在一个加密了的智能卡上了) 那么签名操作就必须在Windows中进行 · RSA Cipher Provider 解密RSA加密的数据(如加密套接字协议层(SSL)对称的钥匙)需要访问私钥库 如果Java程序不能读取私钥(比如 如果私钥存在一个加密了的智能卡上了) 那么RSA解密操作就必须在Windows中进行 我将讲述与Windows平台集成的TrustManager Provider KeyManager Provider RSA Signature Provider和RSA Cipher Provider的用法 TrustManager和KeyManager可以让你构建可运行的Windows支持的Java Secure Socket Extension(JSSE)应用程序 JSSE范例程序——EchoServer和EchoClient可以证明这一点 你不能覆蓋JSSE的内置的RSA Cipher Provider 所以 只有当私钥可以从Windows钥匙库中输出时 JSSE应用程序才可以运行 如果你在编写一个运用RSA签名或RSA加密的Java应用程序 那么你可以运用Windows支持的RSA Signature Provider和Cipher Provider 这不需要从Windows钥匙库中输出私钥 对于其它三个提供者(provider) 你可以单独使用每一个 该代码是用 beta版JDK rc开发的 很稳定 不过 我们打算将该代码作为一个框架 进行进一步的开发 在将该代码用于生产环境前 你应该改进异常处理 确信在本地代码中没有内存泄露 并使密钥的暴露降低到最小 为了测试代码 你需要一个RSA数字证书 你可以从VeriSign网站/client/enrollment得到一个临时证书 有效期是 天 具体操作请遵循该站点上的指南 不要选定标为 Protect your Private Key 的框 因为没有选定这个框 你的私钥就可以输出 下面的代码初试化了四个提供者 MSTrustMgrProvider install() MSKeyMgrProvider install() MSRSASignProvider install() MSRSACipherProvider install() kmf = KeyManagerFactory getInstance( MSKMF ) tmf = TrustManagerFactory getInstance( MSTMF ) Cipher cipher = Cipher getInstance( RSA/ECB/PKCS Padding ) Signature rsa = Signature getInstance( SHA withRSA ) 所有的四个提供者都调用了 个本地的Microsoft函数 · MSgetCACerts()从Microsoft证书库返回一列认证授权中心(Certificate Authority (CA))签发的证书 · 如果一个证书没有被撤消 MSVerifyCertRevocation()返回true · MSgetPrivateKey()为一个特定的别名(alias )返回私钥 (这里所说的一个别名就是带有一个RSA私钥和证书的一个身份 )钥匙从Microsoft钥匙库中输出 · MSgetCert()为一个特定的别名从Microsoft证书库中返回一个证书 · MSgetAliases()返回一组别名(带有私钥的一个身份的名字) Microsoft钥匙库中的每个私钥都有一个别名 · MSrsaSignHash()返回哈希数据(hashed data)的RSA签名 · MSrsaDecrypt()用RSA算法来解密一个先前加密了的数据块 · MSrsaEncrypt()用Microsoft RSA provider来加密一个数据块 · MSrsaGetKeysize()返回Microsoft钥匙库中一个钥匙的RSA钥匙大小 · MSgetCRL()将一个证书撤消清单(Certificate Revocation List(CRL))下载到Microsoft Internet缓存中 一个约 行的用C语言代码编写的源文件mscryptofunctions c中包含了所有这些函数 该代码可以在Windows /NT / /XP上运行 下一页 论Java加密技术与Windows的结合 navaFONT SIZE: pt function sendemail() OpenWindow = window open( 论Java加密技术与Windows的结合&channel= emailwin toolbar=no location=no scrollbars=no menubar=no width= height= ) Untitled Document 商务应用 E企业 数字电子 E时代 您现在的位置是 开发者网络 程序方舟 Java专栏 T O P 排 行 FreeHand MX全新体验 注册表知识群集 Delphi经典编程 例 PHP编程实录 网 校 热 门 论Java加密技术与Windows的结合 · ·独行客··天极论坛 上一页 下一页 公共钥匙加密算法 公共钥匙加密有两个目的 加密和数字签名 公共钥匙加密运用一个包含两部分的钥匙(或一对钥匙) 一个私钥和一个公钥 公钥带有开始和终止日期 一个序号 一个身份(称为Subject Distinguished Name) 和一个CA的签名(见列表 ) RSA是最常用的公共钥匙加密算法 公共钥匙加密运用一个公钥和一个私钥 一个数字证书(如下所示)包含公钥 开始和结束日期 一个序号 一个身份和一个证书授权中心(CA)的签名 Serial number: C AC F C B E Signature algorithm: md RSA Issuer: CN = VeriSign Class CA Individual Subscriber Persona Not Validated OU = /repository/RPA Incorp By Ref LIAB LTD(c) OU = VeriSign Trust Neork O = VeriSign Inc Valid from: Wednesday May : : PM Valid to: Monday July : : PM Subject: E = CN = Brian Boyter OU = Digital ID Class OU = Persona Not Validated OU = /repository/RPA Incorp by ref LIAB LTD(c) OU = VeriSign Trust Neork O = VeriSign Inc Public key: BA B F E C E C BFD D DBB D DFA DBD F CE B E C DD B F A A A A B D D D A E F DAB FB E F F F B A D C D B A E A BD CC A D E FF B F A E F AB F D C C C B C E EFDC D B B Basic constraints: Subject Type=End Entity Path Length Constraint=None Certificate policy: Policy Qualifier Id=CPS Qualifier: Policy Qualifier Info: Organization=VeriSign Inc Notice Number= CRL Distribution Point Distribution Point Name: Full Name: URL= Thumbprint algorithm: sha Thumbprint: A F AA FFC C D AB AFF F E DFFC 公共钥匙加密中的加密是用公钥来完成的 解密是用私钥完成的 公共钥匙加密对于大量的加密来说运算很复杂 但它却被广泛用来分配密钥 密钥 或对称加密算法 如DES和RC 通常用于大量的加密 但是密钥 cha138/Article/program/Java/hx/201311/26142相关参考
漫谈Java加密技术(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 接下来我们介绍对称加密
漫谈Java加密技术(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 加密解密曾经是我一个毕
谈谈Java加密技术(七) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ECC ECCEll
谈谈Java加密技术(六) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 接下来我们介绍DSA数
知识大全 Java技术进阶 基于Java的IDEA加密算法探讨
Java技术进阶基于Java的IDEA加密算法探讨 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
漫谈Java加密技术系列文章一至十 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 漫谈Java加
深入讨论JAVA字节码加密技术(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这个累加载器
深入讨论JAVA字节码加密技术(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如果把的cl
以下两个类可以很方便的完成字符串的加密和解密 加密CryptHelperencrypt(password) 解密CrypHelperdecrypt(password) 代码如下 Crypt
知识大全 用javascript与java进行RSA加密与解密
用javascript与java进行RSA加密与解密 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!