`
stephen830
  • 浏览: 3010227 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

applet-数字签名-访问windows注册表

    博客分类:
  • java
阅读更多
★★★ 本篇为原创,需要引用转载的朋友请注明:《 http://stephen830.iteye.com/blog/254549 》 谢谢支持! ★★★

本篇将讲述2个问题:
(1)applet如何进行数字签名?
(2)applet如何访问本地的windows注册表?

applet作为java唯一的一种运行在浏览器客户端的小程序,在项目中有时候也会起到很关键的作用。applet如果需要访问一些本地资源(这是指客户终端电脑中的资源),那么该applet必须要经过数字签名,而且客户在使用applet前必须接受你设定的数字签名,这样applet才允许访问你所需要的本地资源,比如访问本地的注册表。

(1)如何进行数字签名?
首先将你写好的applet生成jar包,如果用的是eclipse的话,你可以直接用eclipse的Export菜单将写好的applet生成一个jar文件。具体方法如下图:







这样子就生成jar文件了。

接下来就要对jar文件进行数字签名了。首先打开一个dos窗口,进入到你安装的jdk目录下的bin目录。运行下面的命令:
keytool -genkey -alias loginKey -keystore mylogin.key

按照命令出现的提示依次回答,其中第1项是要求输入密码,这个必须记下来,等下会用到的。


当完成上面的操作后,就可以在这个bin目录中看到一个签名文件mylogin.key,然后把jar文件复制到bin目录下,再执行下面的命令:
jarsigner -keystore mylogin.key login.jar loginKey
其中的[mylogin.key]和[loginKey]分别是前面keytool命令中的[mylogin.key]和[loginKey],login.jar就是你的jar文件名。
命令运行后,会要求你输入前面设置的密码。


这样,你的jar文件就经过数字签名了。然后把签名后的jar文件复制到你的前台展示html页面的同一个目录下,将applet嵌在html页面中。
<applet archive="login.jar" code="com.soft4j.Login.class" codebase="." name=Login style="HEIGHT: 40px; WIDTH: 500px; border:1px solid #CCC;" ></applet>


当客户打开你的html页面时会弹出一个要求接受数字签名证书的对话框。

(2)如何访问本地的windows注册表?
applet访问本地windows注册表是有限制的,只能对[HKEY_CURRENT_USER\Software\JavaSoft\Prefs]下面的进行操作。其余的一概不允许操作。

package com.soft4j;
import java.applet.Applet;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import java.util.prefs.Preferences;

import javax.swing.JButton;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

/*
 * Created on 2006-3-20
 * Author stephen
 * Email zhoujianqiang AT gmail DOT com
 * CopyRight(C)2005-2008 , All rights reserved.
 */

/**
 * 
 * @author stephen

 * @version 1.0.0
 * 
 */
public class Login extends Applet implements ActionListener{
    /*
     * applet 签名步骤:
     * 1.生成jar文件
     * jar命令
     * 2.生成key
     * keytool -genkey -alias key名字 -keystore key文件名

     * 3.签名jar文件
     * jarsigner -keystore key文件名 login.jar key名字
     */

    /**
     * 构造方法

     */
    public Login() {
        super();
    }
    
    JTextField userName = null;
    JPasswordField userPass = null;
    String key = null;
    Label l1, l2;
    JButton button = null;
    
    /**
     * 初始化

     */
    public void init()
    {
        
        l1 = new Label("姓名:");
        l2 = new Label("密码:");
        userName = new JTextField(10);
        userPass = new JPasswordField(10);
        button = new JButton("登录");
        add(l1);
        add(userName);
        add(l2);
        add(userPass);
        add(button);
        userName.addActionListener(this);
        userPass.addActionListener(this);
        button.addActionListener(this);
    }

    /**
     * 动作事件
     */
    public void actionPerformed(ActionEvent e) {
        URL url = null;
        StringBuffer theUrl = new StringBuffer();
        try {
            Preferences prefsdemo = Preferences.userRoot().node("/fileds");//读取数据 HKEY_CURRENT_USER\Software\JavaSoft\Prefs\fileds
            key = prefsdemo.get("key1",null);//读取数据 HKEY_CURRENT_USER\Software\JavaSoft\Prefs\fileds下的key为key1的值
            if(this.getParameter("url")==null || "".equals(this.getParameter("url"))){
                URL srcUrl = null;
                srcUrl = this.getDocumentBase();
                theUrl.append(srcUrl.getProtocol());
                theUrl.append("://");
                theUrl.append(srcUrl.getAuthority());
                String path = srcUrl.getPath();
                int len = path.lastIndexOf("/");
                path= path.substring(0,len+1);
                theUrl.append(path);
            }else{
                theUrl.append(this.getParameter("url"));
            }
            theUrl.append("l");//其中l是WEB应用中设置的servlet
            theUrl.append("?l=");
            theUrl.append(userName.getText());
            theUrl.append(",");
            theUrl.append(userPass.getPassword());
            theUrl.append(",");
            theUrl.append(key);
            url = new URL(theUrl.toString());
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        this.getAppletContext().showDocument(url);
    }

}


把applet、数字证书签名、访问本地windows注册表结合起来,把用户的登录和注册表结合起来,进行双重认证,相对更加安全一点。





















  • 大小: 15.8 KB
  • 大小: 16.7 KB
  • 大小: 23.2 KB
  • 大小: 18.2 KB
  • 大小: 20.5 KB
  • 大小: 12.6 KB
  • 大小: 20.6 KB
  • 大小: 3.1 KB
1
0
分享到:
评论

相关推荐

    iReport+jasperReport之客户端打印 ----数字签名

    为了使 Applet 在沙箱环境中安全地访问打印机,需要对其进行数字签名。这通常通过 JDK 的 `keytool` 命令来实现。 ##### 1. 生成密钥对与证书 使用 `keytool -genkey` 命令可以生成一个包含公钥、私钥以及自签名...

    【经典小程序工具类】wechat-applet-toolkit-master.zip

    【微信小程序工具类】wechat-applet-toolkit-master.zip是一个包含一系列用于开发微信小程序的实用工具类的资源包。这个工具集对于微信小程序开发者来说是非常有价值的,因为它可以简化开发过程,提高代码的可重用性...

    微信小程序源码- student-information-system-wechat-applet-master

    【微信小程序源码- student-information-system-wechat-applet-master】是一个专门为学校教务管理设计的微信小程序项目。这个源码提供了完整的开发框架和功能模块,旨在帮助开发者快速构建一个高效、便捷的学生信息...

    jasperreports-applet-5.1.0.jar

    1. **引入依赖**:首先,在项目中引入JasperReports Applet 5.1.0的相关库文件,包括jasperreports-applet-5.1.0.jar。 2. **创建报表**:使用JasperSoft Studio或类似的工具设计报表模板,并将其编译为.JRXML或....

    atmosphere-applet-comet.jar.zip

    《atmosphere-applet-comet.jar.zip:一个融合Atmosphere、Applet和Comet技术的Java库》 在IT领域,"atmosphere-applet-comet.jar.zip"是一个重要的软件组件,它融合了三个关键的技术:Atmosphere框架、Applet以及...

    jasperreports-applet-4.0.2.jar

    jasperreports-applet-4.0.2.jar

    applet数字签名

    为了解决这个问题,Java引入了数字签名机制,确保Applet的来源可信且未被篡改。 **数字签名的概念** 数字签名是一种用于验证电子文档完整性和发送者身份的技术。它通过加密算法对数据进行哈希运算,然后使用私钥对...

    JavaApplet数字签名方法和打包签名工具

    在JavaApplet中,数字签名是一个至关重要的概念,它确保代码的完整性和来源的可信性,防止恶意篡改。本篇文章将深入探讨JavaApplet的数字签名方法以及如何使用打包签名工具JavaAutoPlug.exe来实现这一过程。 首先,...

    svg2vector-applet-1.0.1.jar

    Vector离线编辑和预览工具 support svg file support svgz file support vector file

    order-applet-master.zip

    order-applet-master.zip

    jh1210-asset-management-applet-master.zip 资产管理系统

    《资产管理系统:jh1210-asset-management-applet-master.zip 深度解析》 在信息化日益发达的今天,资产管理系统的应用变得越来越普遍。它能够有效地帮助企业、机构管理其固定资产,提高资产利用率,降低运营成本。...

    mall-applet-master.zip

    "mall-applet-master.zip" 是一个压缩包文件,其内容看起来是某个基于微信小程序的电商应用的源代码库,名为 "mall-applet-master"。由于没有具体的标签信息,我们可以从一般的电商小程序开发的角度来探讨相关的知识...

    atmosphere-applet-comet.jar

    atmosphere-applet-comet.jar

    abcdefzz-applet-master.zip

    当我们谈论"abcdefzz-applet-master.zip"时,我们可以推测这可能是一个Java Applet项目的源代码库。Applet是Java的一种特殊类型,它允许在浏览器中运行Java程序,为用户提供交互式的网页体验。 Applet的概念起源于...

    wechat_mall_applet-master.rar

    本资源“wechat_mall_applet-master.rar”提供了一个精心设计的商城小程序模板,它具备多功能分类、现代化界面和易用性,为开发者提供了快速构建线上商城的便利。 一、小程序概述 微信小程序是腾讯公司推出的一种轻...

    plasma-applet-active-window-control, 用于控制当前活动窗口的等离子 5小程序.zip

    plasma-applet-active-window-control, 用于控制当前活动窗口的等离子 5小程序 plasma-applet-active-window-control请注意,本项目正在KDE伞下移动。 因此,请在适当的位置进行进一步的翻译或者请求请求: ...

    indicator-applet-0.3.1.tar.gz

    "indicator-applet-0.3.1.tar.gz" 是一个在Linux操作系统环境下常见的软件包文件。这个文件的名称表明它是一个版本为0.3.1的"indicator-applet"组件,采用tar.gz格式进行压缩。在Linux世界里,这种文件格式通常用于...

    JAVA实战项目源码-计算机毕业设计java专业-java+applet-聊天系统-基于JAVA的ICQ系统的设计于实现

    JAVA实战项目源码-计算机毕业设计java专业-java+applet-聊天系统-基于JAVA的ICQ系统的设计于实现 系统可以采用任何一种流行的,Java支持的数据库,本系统采用了Microsoft公司的SQL Server2000作为后台数据库。通过...

Global site tag (gtag.js) - Google Analytics