java中ra怎么解释_Java RA5 加密解密

importjava.io.File;importjava.nio.charset.Charset;importjava.security.KeyFactory;importjava.security.KeyPair;importjava.security.KeyPairGenerator;importjava.security.PrivateKey;importjava.security.PublicKey;importjava.security.spec.PKCS8EncodedKeySpec;importjava.security.spec.X509EncodedKeySpec;importjava.util.Base64;importjavax.crypto.Cipher;importorg.apache.commons.io.FileUtils;public classRSAUtil {private static String algorithm = "RSA"; //加密算法

private static String pubPath = "C:\\key\\publickey";private static String priPath = "C:\\key\\privatekey";/*** 生成密钥对并保存在本地文件中

*

*@paramalgorithm : 算法

*@parampubPath : 公钥保存路径

*@parampriPath : 私钥保存路径

*@throwsException*/

public static void generateKeyToFile(String algorithm, String pubPath, String priPath) throwsException {//创建密钥对生成器对象

KeyPairGenerator keyPairGenerator =KeyPairGenerator.getInstance(algorithm);//生成密钥对

KeyPair keyPair =keyPairGenerator.generateKeyPair();//生成公钥 私钥

PublicKey publicKey =keyPair.getPublic();

PrivateKey privateKey=keyPair.getPrivate();//获取公私钥字节数组

byte[] publicKeyEncoded =publicKey.getEncoded();byte[] privateKeyEncoded =privateKey.getEncoded();//对公私钥进行base64编码

String publicKeyString =Base64.getEncoder().encodeToString(publicKeyEncoded);

String privateKeyString=Base64.getEncoder().encodeToString(privateKeyEncoded);//保存公私钥到文件

FileUtils.writeStringToFile(new File(pubPath), publicKeyString, Charset.forName("UTF-8"));

FileUtils.writeStringToFile(new File(priPath), privateKeyString, Charset.forName("UTF-8"));

}/**解密

*@paramencrypted:密文

*@return:原文

*@throwsException*/

public static String decryptRSA(String encrypted) throwsException {//将文件内容转为字符串

String privateKeyString = FileUtils.readFileToString(newFile(priPath), Charset.defaultCharset());//获取密钥工厂

KeyFactory keyFactory =KeyFactory.getInstance(algorithm);//构建密钥规范 进行Base64解码

PKCS8EncodedKeySpec spec = newPKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKeyString));//生成私钥

PrivateKey key =keyFactory.generatePrivate(spec);//创建加密对象

Cipher cipher =Cipher.getInstance(algorithm);//进行解密

cipher.init(Cipher.DECRYPT_MODE, key);//由于密文进行了Base64编码, 在这里需要进行解码

byte[] decode =Base64.getDecoder().decode(encrypted);//对密文进行解密,不需要使用base64,因为原文不会乱码

byte[] bytes1 =cipher.doFinal(decode);return newString(bytes1);

}/*** 使用密钥加密数据

*

*@paraminput :原文

*@return:密文

*@throwsException*/

public static String encryptRSA(String input) throwsException {//将文件内容转为字符串

String publicKeyString = FileUtils.readFileToString(newFile(pubPath), Charset.defaultCharset());//获取密钥工厂

KeyFactory keyFactory =KeyFactory.getInstance(algorithm);//构建密钥规范 进行Base64解码

X509EncodedKeySpec spec = newX509EncodedKeySpec(Base64.getDecoder().decode(publicKeyString));

PublicKey key=keyFactory.generatePublic(spec);//创建加密对象

Cipher cipher =Cipher.getInstance(algorithm);//初始化加密

cipher.init(Cipher.ENCRYPT_MODE, key);//私钥加密

byte[] bytes =cipher.doFinal(input.getBytes());//对密文进行Base64编码

returnBase64.getEncoder().encodeToString(bytes);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值