分段加解密解决RSA“不正确的长度”的异常

  categories:java资料  tags:  author:

RSA 是常用的非对称加密算法。最近使用时却出现了“不正确的长度”的异常,研究发现是由于待加密的数据超长所致。

RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行。
RSA加密对明文的长度是有限制的,如果加密数据过大会抛出如下异常:

Exception in thread “main” javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes
at com.sun.crypto.provider.RSACipher.a(DashoA13*..)
at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)

RSAUtils.java

package security;

import java.io.ByteArrayOutputStream;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;… 阅读全文

Java中JKS不同类型的keystore

  categories:资料  tags:,   author:

Java中JKS不同类型的keystore

JKS是Java中的keystore,keystore是java的密钥库、用来进行通信加密用的、比如数字签名。keystore就是用来保存密钥对的,比如公钥和私钥。具体用法,在网上搜java数字签名,文件加密就行了、有很多教程的。

接下来我们将展示如何使用纯Java代码的JKS keystore。

1.创建JKS的keystore

创建一个硕密钥库创建一个空的密钥库的最简单的方法。我们可以先得到密钥库实例,然后加载一个空库。加载后的空库,我们只需要为密钥的密钥。密钥名称和密码store()。

下面是一个简单的演示:

package cn.iigrowing.keystore.store;

import java.io.FileOutputStream;
import java.security.KeyStore;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class IigJavaStore {
    final static Logger logger = LoggerFactory.getLogger(IigJavaStore.class);

    public static void main(String[] args) throws Exception {
        try {
            KeyStore keyStore 
阅读全文

不同格式证书导入keystore方法

  categories:资料  tags:,   author:

Java自带的keytool工具是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。

    keytool 将密钥和证书储存在一个所谓的密钥仓库(keystore)中。缺省的密钥仓库实现将密钥仓库实现为一个文件。它用口令来保护私钥。

Java KeyStore的类型

JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型(我所知道的共有5种,JKS, JCEKS, PKCS12, BKS,UBER)。

JKS的Provider是SUN,在每个版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4后我们都能够直接使用它。
jks(java key store):
java用的存储密钥的容器。可以同时容纳n个公钥或私钥,后缀一般 是.jks或者.keystore或.truststore等,千奇百怪。不管什么后缀,它就是一个容器,各个公司或机构叫法不同而已。比如把只包含”受 信任的公钥”的容器存成.truststore文件等。
用jdk\bin目录下的keytool.exe对其进行查看,导入,导出,删除,修改密码等各种操作。可以对jks容器加密码,输入正确才可以操作此容器中密钥。还有一个密码的概念与上者不同,是jks中存储着的私钥的密码,通常是绝密的。
JCEKS在安全级别上要比JKS强,使用的Provider是JCEKS(推荐),尤其在保护KeyStore中的私钥上(使用TripleDes)。
PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。
BKS 来自BouncyCastle Provider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个 bit都会产生错误),BKS能够跟JKS互操作,读者可以用Keytool去TryTry。
UBER比较特别,当密码是通过命令行提供的时候,它只能跟keytool交互。整个keystore是通过PBE/SHA1/Twofish 加密,因此keystore能够防止被误改、察看以及校验。以前,Sun JDK(提供者为SUN)允许你在不提供密码的情况下直接加载一个Keystore,类似cacerts,UBER不允许这种情况。

证书导入
Der/Cer证书导入:

要从某个文件中导入某个证书,使用keytool工具的-import命令:
  1. keytool -import -file mycert.der -keystore mykeystore.jks
如果在 -keystore 选项中指定了一个并不存在的密钥仓库,则该密钥仓库将被创建。… 阅读全文

Keytool工具使用

  categories:资料  tags:  author:

keystore是java的密钥库、用来进行通信加密用的、比如数字签名。keystore就是用来保存密钥对的,比如公钥和私钥。具体用法,在网上搜java数字签名,文件加密就行了、有很多教程的。

Keytool 把钥匙和证书储存到一个keystore, 默任的实现keystore的是一个文件.它用一个密码保护钥匙.

keystore
是一个密码保护的文件, 用来存储密钥和证书(也就是说,keystore中存储的有两类型entries);这个文件(默认的)位于你的home目录,也就是你登录到操作系统的 用户名的那个目录。或者通过-keystore参数设为你指定的位置。需要说明的是:如果不通过-keystore来指定位置,将使用home目录中的默 认keystore文件。smilingleo原创

通过-alias来检索keystore中的具体内容(keystore中可能存有多个entry)

如果想查看keystore中每个entry的详细信息,比如谁签发的,用-v参数(verbose),里面你还可以看到默认的有效期。

系统签署的证书其有效期默认为一年,通过-validity来设定其具体的天数。

重要:JDK/jre/lib/security目录下面有一个 cacerts的文件,就是一个keystore,其默认密码是changeit。如果一个App Server想建立一个安全的链接到另外一个Server,需要通过一个受信的数字证书,而这个证书就需要存储在cacerts中。smilingleo原创

keytool
用来import, export, list keystore中内容的工具,还可以用来以测试为目的,生成自己签署的证书。

了解了上面的概念之后,你操作起来就比较容易,比如我们想从一个keystore(文件存在home目录的.keystore文件)中删除某个entry, 其alias是tomcat5,那么keytool命令就是:
keytool -keystore .keystore -delete -alias tomcat5
是不是很自然?smilingleo原创
Keytool 是一个有效的安全钥匙和证书的管理工具.
Java 中的 keytool.exe (位于 JDK\Bin

阅读全文

PKI常见证书格式和转换

  categories:资料  tags:  author:

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。

1.证书格式

PEM 格式

PEM格式通常用于数字证书认证机构(Certificate Authorities,CA),扩展名为.pem, .crt, .cer, and .key。 内容为Base64编码的ASCII码文件,有类似”—–BEGIN CERTIFICATE—–” 和 “—–END CERTIFICATE—–“的头尾标记。服务器认证证书,中级认证证书和私钥都可以储存为PEM格式(认证证书其实就是公钥)。Apache和类 似的服务器使用PEM格式证书。

DER 格式

DER格式与PEM不同之处在于其使用二进制而不是Base64编码的ASCII。扩展名为.der,但也经常使用.cer用作扩展名,所有类型的认证证书和私钥都可以存储为DER格式。Java使其典型使用平台。

PKCS#7/P7B 格式

PKCS#7 或 P7B格式通常以Base64的格式存储,扩展名为… 阅读全文

开源加密解密库

  categories:资料  tags:  author:

OpenSSL

https://www.openssl.org/

https://wolfssl.com/wolfSSL/wolfssl-openssl.html?gclid=CI-H_fSCrssCFQVwvAodOOgDRg

C语言实现,整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。   作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。代码量比较庞大,使用起来不是很方便。支持跨平台。

 

crypto++

https://www.cryptopp.com/

https://sourceforge.net/projects/cryptopp/

C++语言实现,代码庞大且复杂, 使用起来不方便。支持跨平台。

 

CyaSSL

https://github.com/cyassl/cyassl

CyaSSL 软件包是一个快速的、具有双协议实现的 SSL ,主要适用嵌入式的设备。它包含一个 SSL 的客户端和服务器端的实现,支持兼容 OpenSSL 的多个 API 方法,支持 TLS 1.1 以及 AES, 3DES, RC4, HC-128, and RABBIT 等加密方法

C语言实现,该软件包是一个快速的、具有双协议实现的 SSL ,主要适用嵌入式的设备。它包含一个 SSL 的客户端和服务器端的时间,支持兼容 OpenSSL

阅读全文

OpenDS安装过程

  categories:java原创  tags:  author:

一.Opends简介

OpenDS 是一个基于 CDDL ( Common Development and Distribution License )协议,开源 , 免费,使用 LDAP 与 DSML 标准的综合的下一代 Directory Service 。 OpenDS 是用纯 Java 编写的处理大数据量,高性能,高可扩展性,很容易地部署,管理和监控。 Directory Service 不仅包括 DirectoryServer ,还有其它与 directory 相关的基本 service 如: directoryproxy 、 virtualdirectory 、 namespacedistribution 和数据同步。 DirectoryServer

阅读全文

管理SPNEGO TAI:关于使用Kerberos服务主体名称的提示

  categories:资料  tags:  author:

WebSphere® Application Server 简单和受保护的 GSSS-API 协商(Simple and Protected GSS-API Negotiation,SPNEGO)信任关联拦截器(Trust Association Interceptor,TAI)可以作为强大的工具使用,用于实现 Microsoft® Windows® 桌面和基于 WebSphere 的服务器之间的无缝单点登录环境。不过,有些用户在使用 SPNEGO TAI 时会遇到配置服务主体名称方面的问题。本文将介绍一些关于配置 Microsoft Active Directory 和 SPNEGO TAI 的最佳实践。

引言

IBM WebSphere Application Server 简单和受保护的 GSSS-API 协商(Simple and Protected GSS-API Negotiation,SPNEGO)信任关联拦截器(Trust Association

阅读全文

如何在Notes中通过account使用SPNEGO单点登录

  categories:资料  tags:  author:

本文将介绍 Notes 8.5.3 中增加的新特性之一 –Notes 的 SPNEGO 认证。在 Notes 8.5.3 中新增加了几种 Account 类型,用来提供对 SPNEGO 认证的支持。本文将介绍 Notes 客户端为支持 SPNEGO 认证,在框架设计方面的改变以及如何通过配置操作系统加入域来实现单点登录,使 Notes 客户端可以通过相应的 Account 单点登录到相应的 Lotus Connections 或 Lotus Portal 等服务。

简介

在开始讨论如何在 Notes 中通过 account 使用 SPNEGO 单点登录之前,我们需要首先来了解一些概念:SPNEGO,Kerberos 和跨域认证。

SPNEGO(简 单和受保护的

阅读全文

可保护WordPress网页安全的十个插件

  categories:wordpress  tags:,   author:
来源:http://sec.chinabyte.com/103/12090603.shtml

WordPress无疑是最流行的CMS平台,但是正由于它成为越来越多人的选择,黑客也盯上了这个目标。因此如何确保Wordpress网页的安全是一项重要任务。本文将为大家介绍十个用来增强网页安全性的小插件。

Wp安全扫描

Wp-Security会扫描WordPress安装中是否存在安全漏洞,并纠正用户的不当操作,如密码设置,文件许可,数据库安全,隐藏的版本和WordPress管理员保护/安全。

  Secure WordPress

Secure WordPress是一款非常智能的WordPress插件,它可以确保WordPress漏洞的安全:移除登陆页面的错误信息;向插件目录中添加index.html;移除wp(除管理区域外)。

  Login LockDown

这一插件可通过限制用户在一定时间内,从给定IP范围登陆的次数来保护WordPress。如果限定时间内,同一IP的登陆次数超出许可范围,那么登陆功能就会被禁用。这样可以阻止密码恢复。

  Sabre

Sabre是Simple Anti Bot Registration Engine的首字母缩写。它是一套用于博客的反垃圾注册应对措施。如果你的WordPress网页支持新用户订阅时就可以采用这个插件。

  Bad Behavior

Bad Behavior扮演着看门人的角色,是其他反垃圾链接方案的一个补充。它可以阻止垃圾链接的发送者阅读你的网页。这样你的页面在保持干净的同时还可以有效防止DoS情况的发生。

  用于WordPress的反病毒插件

AntiVirus for WP 是一款有效的智能方案,它能保护博客免受垃圾注入和病毒危害。它还提供每日一邮,来报告恶意文件或可疑文件。

  TAC

主题验证检测器(TAC)可以对每个主题的源文件进行搜索,以查找其中是否包含恶意代码。如果找到恶意代码,TAC会将主题文件的路径,代码行和一小段可疑代码显示出来。

  Stealth Login

这个插件可以让用户创建用于登录,登出,管理和注册WordPress博客的自定义URL链接。用户可以创建便于记忆的URL链接,而不是将登 录链接摆放在主页上。例如,你可以将登录链接设置为http://www.myblog.com/login 来登录网页。你也可以启用Stealth模式,在该模式下,用户不允许直接使用wp-login.php登录。

  reCAPTCHA

reCAPTCHA是一个源自卡内基 · 梅隆大学的反垃圾方法,它通过多种方式使用CAPTCHA。reCAPTCHA使用是不同于自动生成字符的另类方法,因为垃圾信息的注入者可能会使用OCR库来读取自动生成的字符。大家不妨一试。

  AskApache密码保护

这个插件不会控制WordPress或弄乱数据库,相反,它利用快速可靠的内置安全性能为博客添加安全多个安全层级。该插件会经常更新,旨在阻止攻击者利用漏洞攻击网页。

阅读全文



快乐成长 每天进步一点点