??xml version="1.0" encoding="utf-8" standalone="yes"?> 对称加密法Q非对称加密法 常见的加密算法可以分成三c,对称加密法Q非对称加密法和Hash法?/span> 对称加密 指加密和解密使用相同密钥的加密算法。对U加密算法的优点在于加解密的高速度和用长密钥时的隄解性。假设两个用户需要用对U加密方法加密然后交换数据,则用h需?个密钥ƈ交换使用Q如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发成Z业信息部门的恶梦。对U加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守U密是不可能的,他们通常会有意无意的把密钥泄漏出?#8212;—如果一个用户用的密钥被入侵者所获得Q入侵者便可以d该用户密钥加密的所有文档,如果整个企业q一个加密密钥,那整个企业文档的保密性便无从谈v?/p>
常见的对U加密算法有DES?DES、Blowfish、IDEA、RC4、RC5、RC6和AES 非对U加?/p>
指加密和解密使用不同密钥的加密算法,也称为公U钥加密。假设两个用戯加密交换数据Q双方交换公钥,使用时一方用Ҏ的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用P企业需要生成n对密钥,q分发n个公钥。由于公钥是可以公开的,用户只要保管好自qU钥卛_Q因此加密密钥的分发变得十分简单。同Ӟ׃每个用户的私钥是唯一的,其他用户除了可以可以通过信息发送者的公钥来验证信息的来源是否真实Q还可以保发送者无法否认曾发送过该信息。非对称加密的缺Ҏ加解密速度要远q慢于对U加密,在某些极端情况下Q甚臌比非对称加密慢上1000倍?/p>
常见的非对称加密法有:RSA、ECCQ移动设备用Q、Diffie-Hellman、El Gamal、DSAQ数字签名用Q?/p>
Hash法 Hash法特别的地方在于它是一U单向算法,用户可以通过Hash法对目标信息生成一D늉定长度的唯一的Hash|却不能通过q个Hash值重新获得目标信息。因此Hash法常用在不可还原的密码存储、信息完整性校验等?/p>
常见的Hash法有MD2、MD4、MD5、HAVAL、SHA 加密法的效能通常可以按照法本n的复杂程度、密钥长度(密钥长安全)、加解密速度{来衡量。上q的法中,除了DES密钥长度不够、MD2速度较慢已逐渐被淘汰外Q其他算法仍在目前的加密pȝ产品中?/p>
]]>
]]>
其实RSA非常z,但很?br />
程
1Q寻?个大的素数pQq n=p*q=33 N=Qp-1Q?Qq-1Q?20
公钥e一般是3 U钥d要通过公钥eȝ出来
e*d=1(mod N) 是说e和d的乘U模N? 也就是e和d关于模N互ؓ逆元
3*7=1Qmod 20Q?可知d=7
加密的明文设为M 加密后的密文设ؓc
加密q程QC=M^e(mod n)
解密q程QM=C^d(mod n)
举个具体的例?假如M=2
加密q程QC=2^3(mod 33)=8(mod 33)
解密q程QM=8^7(mod 33)=2097152(mod 33)=2(mod 33) 可以看出和和本来的明文是相同的?br />
原理可以理解?M=M^(ed) (mod n)
本例?e*d=21 也就是是M^21ơ方{于M
RSAq个Ҏ是数论中的贚w定理推出?br />
在讲讲细?比如g加密的是26的字?当明文的值是??6
拿n=33说吧 加密后的密文的值是1?3 q很正常
但是解密?一定和明文的值相?也就??6
实际情况?公钥e是公开?U钥d是保密的
比如甲要l乙发个东西 乙的公钥׃是公开?所以甲知道 但甲不知道乙的私?br />甲先用乙的公钥加?nbsp; 之后 q个密文只能用乙的私?׃乙的U钥是保密的 只有他自q?所以保证了安全
RSA最大的安全问题?n的分?只要把n分解为p*q 则N=Qp-1Q(q-1Q?br />Ҏ e*d=1Qmod NQ?可以通过e出d 那么U钥都被人算出来?也就没安全性而言?br />不过可惜的是 大数分解是一个单向的函数 你算知道pQqn很容易,但是知道n出pQq相当?br />
一?n是加密解密用?N是知道ed?br />
g也没说你要干?想看懂就q么?br />如果要实现这个算法:
必须知道2点:
1.pQqq个两个大素数的生成Q这牉|到素性检验,数论中是一章的内容Q没法和你展开
2.取模q算Q由于加密解密过E可能取一个数的几十次方的模数Q所以这个必ȝ便的法来化解复杂度Q也是模重复^方算法?br />
如果要编E中使用Q太Ҏ?br />M个dll
在java?直接有可用于RSA的类 相当Ҏ
]]>
其实都还相爱Q但必须面对现实Q不再会被记忆和d时生的痛苦蒙蔽自己的双眹{?br />
用法Qjavac <选项> <源文?gt;
其中Q可能的选项包括Q?br />
-g 生成所有调试信?br />
-g:none 不生成Q何调试信?br />
-g:{lines,vars,source} 只生成某些调试信?br />
-nowarn 不生成Q何警?br />
-verbose 输出有关~译器正在执行的操作的消?br />
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户cL件的位置
-cp <路径> 指定查找用户cL件的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导cL件的位置
-extdirs <目录> 覆盖安装的扩展目录的位置
-endorseddirs <目录> 覆盖{的标准\径的位置
-d <目录> 指定存放生成的类文g的位|?br />
-encoding <~码> 指定源文件用的字符~码
-source <版本> 提供与指定版本的源兼Ҏ?br />
-target <版本> 生成特定 VM 版本的类文g
-version 版本信息
-help 输出标准选项的提?br />
-X 输出非标准选项的提?br />
-J<标志> 直接?<标志> 传递给q行时系l?br />
用法Qjar {ctxu}[vfm0Mi] [jar-文g] [manifest-文g] [-C 目录] 文g?...
选项Q?br />
-c 创徏新的存档
-t 列出存档内容的列?br />
-x 展开存档中的命名的(或所有的〕文?br />
-u 更新已存在的存档
-v 生成详细输出到标准输Z
-f 指定存档文g?br />
-m 包含来自标明文g的标明信?br />
-0 只存储方式;未用ZIP压羃格式
-M 不生所有项的清单(manifest〕文?br />
-i 为指定的jar文g产生索引信息
-C 改变到指定的目录Qƈ且包含下列文Ӟ
如果一个文件名是一个目录,它将被递归处理?br />
清单Qmanifest〕文件名和存档文件名都需要被指定Q按'm' ?'f'标志指定的相同顺序?br />
CZ1Q将两个class文g存档C个名?'classes.jar' 的存档文件中Q?br />
jar cvf classes.jar Foo.class Bar.class
CZ2Q用一个存在的清单QmanifestQ文?'mymanifest' ?foo/ 目录下的所?br />
文g存档C个名?'classes.jar' 的存档文件中Q?br />
jar cvfm classes.jar mymanifest -C foo/ .
用法: java [-选项] c?[参数...]
(执行一个类)
或?java [-选项] -jar jar文g [参数...]
(执行一个jar文g)
其中Q可能的选项包括Q?br />
-client 选择 "client" VM(ginger547:应该是指Virtual Machine)
-server 选择 "server" VM
-hotspot ?"client" VM同义 [不赞成]
默认情况的VM是client.
-cp <一个文件夹和zip/jar文gl成的类搜烦路径>
-classpath <一个文件夹和zip/jar文gl成的类搜烦路径>
一个由文g夹,JAR压羃文gQ或者ZIP压羃文gl成的用来搜索类的列?br />
-D<名字>=<?gt;
讄一个系l属?br />
-verbose[:class|gc|jni]
使详l输出变的可?br />
-version 打印产品版本然后退?br />
-version:<?gt;
只运行指定版?br />
-showversion 打印产品版本后l?br />
-jre-restrict-search | -jre-no-restrict-search
在版本搜索的时候,包含/排除用户Uh的JRE
-? -help 打印帮助信息
-X 打印非标准选项帮助
-ea[:<包名>...|:<cd>]
-enableassertions[:<包名>...|:<cd>]
使断a可用
-da[:<包名>...|:<cd>]
-disableassertions[:<包名>...|:<cd>]
是断a不可?br />
-esa | -enablesystemassertions
使系l断言可用
-dsa | -disablesystemassertions
使系l断言不可?br />
-agentlib:<库名>[=<选项>]
加蝲本地代理?lt;库名>,例如. -agentlib:hprof
同时可查? -agentlib:jdwp=help?-agentlib:hprof=help
-agentpath:<路径?gt;[=<选项>]
通过全\径名来加载本C理库
-javaagent:<jar路径>[=<选项>]
加蝲Java~程语言代理Q可查看 java.lang.instrument