首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 虚拟主机行业最新资讯
在java和.net平台的加密术比较_asp.net技巧
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

最近在写一个Java的消息服务器,同时需要做一个.NET版本的客户端。他们之间需要安全通讯,基于一些简单的密码协议,用到公钥加密、对称加密、Hash算法。这个过程中,我对这两个平台的加密部分有了一定了解,以下也是我的一些新的认识吧。

1、对称加密
1) Java 1.5的对称加密很简单,提供的算法也较多。可以说是,使用简单,傻瓜式,而且功能齐全。
例如:
SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decryptText = cipher.doFinal(data);
2) .NET 2.0的对称加密,缺省加密模式是CBC,CBC加密的时候,需要一个密钥的同时,还需要初始化向量IV,这会使得初学入者使用起来不方便,这个问题到是十分容易对付的,修改一下配置就好了。
SymmetricAlgorithm algorithm = SymmetricAlgorithm.Create(algorithmName);
algorithm.Mode = CipherMode.ECB;
algorithm.Key = key;
algorithm.Padding = PaddingMode.PKCS7;通过这种设置之后,就能够跟Java通讯操作,互为加密解密。

3) .NET 2.0和Java 1.5方面,加密算法的名字有些地方稍有差别。
AES <==> Rijndael
DESede <==> TripleDES
这是似乎是常识。


2、公钥加密算法RSA
1) Java 1.5中,RSAPublicKey进行getEncoded()得到字节数组是ASN.1编码的。逆转回来需要使用X509EncodedKeySpec,这个细节需要阅读文档细节或者对密码学有一定了解才知道。例如:
//public key ==> bytes
PublicKey publicKey =
byte[] rawPublicKey = publicKey.getEncoded();

// bytes ==> public key
X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(rawPublicKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key newPublicKey = keyFactory.generatePublic(x509KeySpec);
除此之外,Java的公钥加密部分,还是相当易于使用的。风格依然是功能简单,傻瓜式使用,功能齐全。

Java中,支持ASN.1编码,但是隐藏其中,使用者完全觉察不到。

2) .NET 2.0中,设计有些混乱,并不支持ASN.1编码。但是Mono似乎在做ASN.1编码的支持。为此我自己借鉴一个Java开元JCE的实现,实现了一个.NET版本的ASN Parser和ASN Builder,花了两天时间。如下:
public static RSAParameters ASN1ToPublicKey(byte[] rawPublicKey)
{
    ASN1InputStream asnInput = new ASN1InputStream(rawPublicKey);
    ASN1Sequence asnSeq = (ASN1Sequence)asnInput.ReadObject();
    SubjectPublicKeyInfo subjectPublicKeyInfo = new SubjectPublicKeyInfo(asnSeq);

    DERObjectIdentifier algOid = subjectPublicKeyInfo.AlgorithmId.ObjectId;

    RSAPublicKeyStructure pubKey = new RSAPublicKeyStructure(
            (ASN1Sequence)subjectPublicKeyInfo.PublicKey);

    byte[] modulus = pubKey.Modulus;
    byte[] publicExponent = pubKey.PublicExponent;

    RSAParameters pram = new RSAParameters();
    pram.Modulus = modulus;
    pram.Exponent = publicExponent;

    RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
    rsa.ImportParameters(pram);

    return pram;
}

public static byte[] PublicKeyToASN1(RSAParameters pram)
{
    SubjectPublicKeyInfo info = new SubjectPublicKeyInfo(
        new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption,
                new DERNull()), new RSAPublicKeyStructure(pram.Modulus, pram.Exponent).DERObject);

    byte[] rawPublicKey = info.GetDEREncoded();
    return rawPublicKey;
}

3、总体感觉
1) Java的安全模块设计得还是很好的,简单易用,功能也齐全。
2) .NET 2.0则是有点乱,命名风格和系统框架有些不协调,功能欠缺,代码组织的不够理想。
3) 在Mono中,对安全的支持要比微软已发布的要好,从网上可以看到,.NET Framework 2.0的一些特性也是从Mono中借鉴过来的。
4) 甚至可以认为,.NET加密模块的开发团队能力可能不是很强。就如那一句话“编写糟糕的代码并非我们的专利”。
http://www.cnblogs.com/jobs/archive/2006/09/22/512297.html


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·ASP空间申请|PHP空间|CGI空间|
·最新中国虚拟主机域名注册商排名
·申请个人主页|个人主页空间申请|个人主页空间
·域名注册、域名申请、国际域名注册常识
·私服服务器租用,传奇服务器租用
·jsp空间,java空间,jsp虚拟主机,java虚拟主机
·Java中四种XML解析技术之不完全测试-JSP教程,Java与XML
·成都域名注册成都网站建设公司介绍
·空间租用,租用空间
·成都虚拟主机
最新文章
·IDC市场黑幕重重 监管乏力造可乘之机
·中文域名忽悠了中国数十万的企业
·.com域名批发价今起上涨7% 部分注册商不涨价
·电信涨价,CDN市场遭受强烈冲击
·运用网络工具注册高质量的中文域名
·2007年8月美国COM域名数量达4288万
·网上商店集体启用独立CN域名 走向品牌化经营
·域名管理成本增加 国际域名下周将全面上涨
·ICANN将完全取消苏联的域名后缀
·信产部提出解决互联网发展矛盾六大思路
相关主题
  • 在javascript中使用正则表达式_javascript教程
  • 在javascript中实现命名空间_javascript教程
  • 在java中读写excel文件_java认证
  • 在java中使用正则表达式_java认证
  • 在JAVA中连接Oracle数据库(例子)-JSP教程,Java技巧及代码
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭