安全加密

*Author:Yuanhonglong
*Date:2013-12-20
*1948281915
*/
package mine.algorithm.key.Des_Rsa;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.UnrecoverableEntryException;
import java.security.spec.InvalidKeySpecException;
import java.util.Scanner;
import javax.crypto.KeyGenerator;

public class 生成密钥 extends 获得密钥信息{

static String path,pripath,pubpath;
static Scanner scanner=new Scanner(System.in);
static Key key;
static PrivateKey privatekey;
static PublicKey publickey;
static KeyPair mykeypair;
static FileOutputStream fos;
static File fi;
static String choose;

public static void main(String[] args) throws NoSuchAlgorithmException,IOException{
System.out.println("Enter algorithm:(Rsa,Aes or Des)");
choose=scanner.next();
create(choose);
}

public static void create(String algo) throws NoSuchAlgorithmException,IOException{
switch(algo){
case "Aes":
System.out.println("Enter path:");
path=scanner.next();
key=Aess(path);
break;
case "Des":
System.out.println("Enter path:");
path=scanner.next();
System.out.println("A init key or a new key will your password?(init/password)");
String xzxz=scanner.next();
switch(xzxz){
case "password":
System.out.println("Enter password:");
String str=scanner.next();
key=getKey(str,path);
break;
case "init":
key=Dess(path);
break;
default:
System.err.print("No this choice!");
System.exit(-1);
}http://www.huiyi8.com/jiaoben/
break; javascript特效
case "Rsa":
System.out.println("Enter privatepath:");
pripath=scanner.next();
System.out.println("Enter publicpath:");
pubpath=scanner.next();
Rsa(pripath,pubpath);
break;
default:
System.err.print("No this choice!");
System.exit(-1);
}
System.out.println("Do you want to get the informations of the key?(yes/no)");
String xuanzhe=scanner.next();
switch(xuanzhe){
case "yes":
switch(algo){
case "Aes":
try{
getinformation(choose,path);
}
catch(InvalidKeySpecException|UnrecoverableEntryException|KeyStoreException|ClassNotFoundException e){
}
break;
case "Des":
try{
getinformation(choose,path);
}
catch(InvalidKeySpecException|UnrecoverableEntryException|KeyStoreException|ClassNotFoundException e){
}
break;
case "Rsa":
try{
getinformation("private",pripath);
getinformation("public",pubpath);
}
catch(InvalidKeySpecException|UnrecoverableEntryException|KeyStoreException|ClassNotFoundException e){
}
break;
default:
System.err.print("No this choice!");
System.exit(-1);
}
case "no":
break;
default:
System.err.print("No this choice!");
System.exit(-1);
}
}

public static Key Aess(String path) throws NoSuchAlgorithmException,IOException{
KeyGenerator keyGenerator=KeyGenerator.getInstance("AES");
System.out.println("输入密钥长度:(128/256)");
Integer xx=null;
xx=scanner.nextInt();
keyGenerator.init(xx);
Key myKey=keyGenerator.generateKey();
// 生成密钥
System.out.println("得到AES密钥:"+myKey.getEncoded());
File fi=new File(path);
FileOutputStream fos=new FileOutputStream(fi);
fos.write(myKey.getEncoded());
try{
fos.close();
}
catch(IOException e){
}
System.out.println("AES密钥保存在:"+fi.getPath());
return myKey;
}

public static Key Dess(String path) throws NoSuchAlgorithmException,IOException{
KeyGenerator keyGenerator=KeyGenerator.getInstance("DES");
String x="9999991";
keyGenerator.init(new SecureRandom(x.getBytes()));
Key myKey=keyGenerator.generateKey();
System.out.println("得到DES密钥:"+myKey.getEncoded());
File fi=new File(path);
FileOutputStream fos=new FileOutputStream(fi);
fos.write(myKey.getEncoded());
fos.close();
System.out.println("DES密钥保存在:"+fi.getPath());
return myKey;
}

public static Key getKey(String strKey,String path) throws IOException{
KeyGenerator generator=null;
try{
generator=KeyGenerator.getInstance("DES");
}
catch(NoSuchAlgorithmException e){
}
generator.init(new SecureRandom(strKey.getBytes()));
Key key=generator.generateKey();
System.out.println("得到DES密钥:"+key);
File fi=new File(path);
FileOutputStream fos=new FileOutputStream(fi);
fos.write(key.getEncoded());
fos.close();
System.out.println("DES密钥保存在:"+fi.getPath());
return key;
}

public static void Rsa(String pripath,String pubpath) throws NoSuchAlgorithmException,IOException{
KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024);
mykeypair=keyPairGenerator.generateKeyPair();
privatekey=mykeypair.getPrivate();
publickey=mykeypair.getPublic();
fi=new File(pripath);
fos=new FileOutputStream(fi);
fos.write(privatekey.getEncoded());
System.out.println("私钥保存在:"+fi.getPath());
fos.close();
fi=new File(pubpath);
fos=new FileOutputStream(fi);
fos.write(publickey.getEncoded());
fos.close();
System.out.println("公钥保存在:"+fi.getPath());
}

安全加密

时间: 2024-11-03 21:15:19

安全加密的相关文章

php7实现基于openssl的加密解密方法

还需要注意的是加密字符串长度问题,如果加密字符串长度太长需要进行分段加解密,如下代码: 加密:(公匙加密,私密一般用来解密) function encrypt($originalData){ $publicKeyFilePath = '/www/ceshi/rsa_public_key.pem'; extension_loaded('openssl') or die('php需要openssl扩展支持'); file_exists($publicKeyFilePath) or die('公钥的文

python实现网页登录时的rsa加密流程

对某些网站的登录包进行抓包时发现,客户端对用户名进行了加密,然后传给服务器进行校验. 使用chrome调试功能断点调试,发现网站用javascript对用户名做了rsa加密. 为了实现网站的自动登录,需要模拟这个加密过程. 网上搜了下关于rsa加密的最简明的解释: rsa加密是非对称加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己

人工智能PK透明加密,数据安全保护谁能技高一筹

人工智能一直是全球的一大热点话题,从很久之前谷歌研发的人工智能机器人击败柯洁.李世石等众多围棋高手,到最近特斯拉CEO埃隆o马斯克投资的人工智能研究机构OpenAI研发的机器人击败了国外顶尖Dota 2玩家之一的Danil Ishutin.而重磅消息却是美国电商巨头亚马逊,已准备将人工智能技术用于商业服务中,计划将其用于云存储方面,用于保护用户数据的安全. 亚马逊的这一计划,主要是通过机器学习技术,自动识别.分类和保护用户保存在亚马逊云计算平台上的敏感数据.但引入人工智能技术之后,亚马逊的云存储

Java DES 加密和解密源码

Java密码学结构设计遵循两个原则: 1) 算法的独立性和可靠性. 2) 实现的独立性和相互作用性. 算法的独立性是通过定义密码服务类来获得.用户只需了解密码算法的概念,而不用去关心如何实现这些概念.实现的独立性和相互作用性通过密码服务提供器来实现.密码服务提供器是实现一个或多个密码服务的一个或多个程序包.软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器.安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来

使用JAVA解压加密的中文ZIP压缩包

近来项目中需要对ZIP压缩包解压,然后将解压后的内容存放到指定的目录下. 该压缩包的特性: 使用标准的zip压缩格式(压缩算法没有深入探究) 压缩包中带有目录并且目录名称是中文 压缩时加了密码 因为jre中自带的java.util.zip.*包不支持中文及加密压缩,所以选择使用zip4j包. 下面是解压的实现代码: 1 public class UnZip { 2 private final int BUFF_SIZE = 4096; 3 4 /* 5 获取ZIP文件中的文件名和目录名 6 */

关于数据传输中加密解密那点事儿(一)

随着互联网的兴起,越来越多的信息和资源要通过网络传输完成:然而在这些数据传输中总有一些"无关人员"做一些窃听.盗取.篡改等危害数据安全的行为,所以我们要对数据进行加密处理,以保证数据的安全传输: 所以有了一下几种加密方式: 一.对称加密: 这种算法简单来说就是 数据的发送方和接收方都必须要有同一种密钥(加密数据所用到的密钥),在数据的传输中 数据与密钥都通过加密的方式传送: 特性:在数据加密中,数据被分成固定大的块,逐个加密:加密和解密速度也快: 缺陷:因为加密和解密使用同一种密钥,所

如何有效的对PDF文件进行加密保护

PDF是办公中保存资料数据文件不可或缺的一类电子文件工具软件,它的优势在于清晰的位图显示形式和良好的阅读体验,所以很多合同报告.电子书.技术文档.设计图纸等都越来越倾向这种存储方式.和普通的电子文档一样,如Word.Excel,PDF文件也存在信息安全泄漏风险,因此加密保护也是必不可少的.下面就来分享下如何对PDF进行权限设置和PDF文件加密操作. PDF格式的官方编辑器Adobe acrobat 软件为我们提供的口令加密包含"打开文档的口令"和"限制文档编辑打印口令&quo

MD5加密和RSA加密

1.MD5加密  MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用. MD5的功能:     ①.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    ②.不同的输入得到的不同的结果(唯一性):    ③.根据128位的输出结果不可能反推出输入的信息(不可逆),也就是只能加密,不能解密:  MD5的用途:     1.防止被篡改:    1)比如发送一个电子文档,发送前,我先得到MD5的

AJAX+REA实现前后台数据交互的加密解密

AJAX+REA实现前后台数据交互的加密解密 1.创建js文件Encryption.js /**  * 加密解密  */ /** RSA加密用 生成key */ function bodyRSA(){ /** 1024位的key参数写130,2014位的key参数写260 */ setMaxDigits(130); /** ajax 调用后台方法,取回公钥 */ var keyR ;     $.ajax({      url: "/GHGL/Key/pk",//请求后台的url,本例

Android使用KeyStore对数据进行加密

谈到 Android 安全性话题,Android Developers 官方网站给出了许多很好的建议和讲解,涵盖了存储数据.权限.网络.处理凭据.输入验证.处理用户数据.加密等方方面面 密钥的保护以及网络传输安全 应该是移动应用安全最关键的内容.Android 提供大量用来保护数据的加密算法,例如 Cipher 类中提供了 AES 和 RSA 算法,再例如安全随机数生成器 SecureRandom 给 KeyGenerator 提供了更加可靠的初始化参数,避免离线攻击等等. 而如果需要存储密钥以