« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
暂无公告... |
Blog信息 |
blog名称:天地无用 日志总数:55 评论数量:43 留言数量:1 访问次数:194114 建立时间:2008年4月17日 |

| |
Java 与系统安全,第一部分:密码术基础(转) 软件技术
kkk888929 发表于 2008/4/22 16:15:01 |
第一章 关于本教程
■本教程是关于什么方面的? 恐怕没有什么软件工程主题的重要性比应用程序安全性更紧迫了。无论是来自内部或外部的攻击都会带来巨大损失,某些攻击会使软件公司对造成的损失承担赔偿责任。随着计算机(尤其是因特网)技术的发展,安全性攻击正在变得越来越成熟和频繁。利用各种最新技术和工具是应用程序安全性的一个关键;另一个关键是由经过考验的技术(如数据加密、认证和授权)构筑的牢固的基础。 Java 平台的基本语言和库扩展都提供了用于编写安全应用程序的极佳基础。本教程讨论了密码术基础知识与如何用Java 编程语言实现密码术,并提供了样本代码来说明这些概念。 在这个两部分教程的第一部分中,我们讨论库扩展(现在是JDK 1.4 库的一部分)中的内容,这些库扩展被称为Java 密码术扩展(Java Cryptography Extension(JCE))和Java 安全套接字扩展(Java Secure Sockets Extension (JSSE))。此外,本教程还介绍了Ce |
|
用java压缩文件示例(没有中文问题)(转) 软件技术
kkk888929 发表于 2008/4/22 16:04:59 |
这本是别人的东西,我只是修改了中文问题。在这个基础上改一下就可以压缩多个文件和目录,甚至可以写一个winzip之类的东东哦,有兴趣的可以研究一下。 import java.io.*; import java.util.zip.*; /** * @version Version 1.3 */ public class w0514{ public static void main(String[] args){ try{ BufferedReader i |
|
java zip 中文问题(转) 软件技术
kkk888929 发表于 2008/4/22 15:55:44 |
用ant解压包含中文文件名的压缩文件 中文问题是java中的普遍性问题.今天下午遇到一个包含中文文件名的压缩文件解压问题.找了不少资料.现贴出解集. 在java.util.zip包也可以用来处理解压问题,不过对含有中文文件名的压缩包无能为力,这是因为ZipOutputStream压缩和解压ZIP文件对文件名都是以UTF-8编码方式来处理的,而我们用winzip压缩文件对文件名只会以ASCII编码方式来处理.所以会出现编码不一致的问题. 有两种解决方案: 第一种就是修改ZipOutputStream,参考修改如下:(这个我没有测试过) // ZipEntry e = createZipEntry(getUTF8String(b, 0, len)); ZipEntry e=null; try { if (this.encoding.toUpperCase().equals("UTF-8")) e= |
|
如何用Java压缩文件(转) 软件技术
kkk888929 发表于 2008/4/22 14:56:08 |
/* * [Demo Program] * * try { * zipDir("c:/temp", "c:/temp.zip", true); * } catch(Exception e) { * //handle exception * } */ public static void zipDir(String directory, String zipname, boolean override) { try { File file = new File(zipname); if (file.isDirectory()) return; if ((!override) && file.exists()) return; file.delete(); ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(file)); zipDir(directory, zos); D |
|
JAVA对数字证书的常用操作(转3) 软件技术
kkk888929 发表于 2008/4/22 14:15:52 |
java.security.cert.Certificate cac=cf.generateCertificate(in2);
in2.close();
(c)获取CA的公钥
PublicKey pbk=cac.getPublicKey();
(b)获取待检验的证书(上步已经获取了,就是C1)
(c)检验证书
boolean pass=false;
try{
c1.verify(pbk);
pass=true;
}catch(Exception e){
pass=false;
System.out.println(e);
} |
|
JAVA对数字证书的常用操作(转2) 软件技术
kkk888929 发表于 2008/4/22 14:15:21 |
九 JAVA程序签发数字证书
(1)从密钥库中读取CA的证书
FileInputStream in=new FileInputStream(".keystore");
KeyStore ks=KeyStore.getInstance("JKS");
ks.load(in,storepass.toCharArray());
java.security.cert.Certificate c1=ks.getCertificate("caroot");
(2)从密钥库中读取CA的私钥
PrivateKey caprk=(PrivateKey)ks.getKey(alias,cakeypass.toCharArray());
(3)从CA的证书中提取签发者的信息
byte[] encod1=c1.getEncoded(); 提取CA证书的编码
X509CertImpl cimp1=new X509Cert |
|
JAVA对数字证书的常用操作(转) 软件技术
kkk888929 发表于 2008/4/22 14:12:30 |
一需要包含的包
import java.security.*;
import java.io.*;
import java.util.*;
import java.security.*;
import java.security.cert.*;
import sun.security.x509.*
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
二 从文件中读取证书
用keytool将.keystore中的证书写入文件中,然后从该文件中读取证书信息
CertificateFactory cf=CertificateFactory.getInstance("X.509");
FileInputStream in |
|
使用Java实现CA(四)(转) 软件技术
kkk888929 发表于 2008/4/22 14:11:02 |
前面几篇文章已经把如何用Java实现一个CA基本上讲完了.但是他们都有一个特点,就是用户的信息都是在现场获取的,不能做申请和签发相分离.今天我们要讲述的是PKCS#10证书请求文件.它的作用就是可以使申请和签发相分离.
PKCS#10证书请求结构中的主要信息包含了被签发者(证书申请者)的主体名称(DN)和他的公钥.因此一个CA在获取到一个PKCS#10证书请求后,就可以从中获取到任何和签发证书有关的信息,然后用它自己的私钥签发证书.
使用BC Provider在Java中构造一个证书请求格式的对象调用其构造函数即可,这个函数如下:
PKCS10CertificationRequest(java.lang.String signatureAlgorithm, X509Name subject, java.security.PublicKey key, ASN1Set attributes, java.security |
|
使用Java实现CA(三)(转) 软件技术
kkk888929 发表于 2008/4/22 14:10:34 |
前几次我已经基本上把如何做CA所需要的基础知识讲得差不多了,今天直接讲如何用Java程序来实现一个CA应该就不是什么太困难的事情了.
要做CA,第一步要准备好自己的证书和私钥.私钥如何从文件里面读取出来前面已经讲过了.从文件系统中读出证书的代码如下:
CertificateFactory certCF = CertificateFactory.getInstance("X.509"); X509Certificate caCert = certCF.generateCertificate(certBIS);
这里cerBIS是一个InputStream类型的对象.例如一个标准的X509v3格式的证书文件所形成的输入流.
第二步就是从用户那里获取输入,然后构造主体名称结构DN,如何构造DN上次已经说过 |
|
使用Java实现CA(二)(转) 软件技术
kkk888929 发表于 2008/4/22 14:09:28 |
昨天本来快写完了,结果不小心按了"tab"键,然后向按退格键,结果退到前一个页面了,然后全部都白写了,不爽.只好今天重新写了.
上次我们讲到如何生成密钥对,以及如何将诸如公钥,私钥,证书等这一类安全对象在文件系统和内存之间来回转换.这些是准备开CA的基本功,今天我们讲一下CA的基本原理以及如何使用主体名称结构DN(Distinguish Name)来表示每一个证书中的主体.
一份证书就是一个权威机构对一个主体的身份的确认的证明.即一份证书表示一个权威机构确认了一个主体就是它自己,而不是其它的冒名顶替者.主体可以是一个个人,也可以不是,例如,在需要安全服务的时候,需要为一台网站的服务器颁发证书,这种证书的主体就是一台服务器.签署证书的权威机构就叫做CA,该权威机构本身也是一个主体.权威机构通过对包含有待认证的主体的一系列信息的待签名证书"(TBS,to be signed)进行数字签名来表示该机构对它的认可.一份包含了待认证的主体的相关信息的TBS再加上CA使用自己的私钥进行签名产 |
|
|