Java加密和解密

1.使用异或进行加密和解密操作

​ 对于一个二进制数和同一个二进制数进行异或操作两次就会得到原来的数

a 97 0110 0001
b 1  0000 0001
第一次   0110 0001
	    0000 0001
加密完成 0110 0000
		0000 0001
解密完成 0110 0001
public static String xor(String base){
        // 将字符串转换成字符数组
        char[] chars = base.toCharArray();
        // 进行加密操作
        for (int i = 0;i < chars.length;i ++)
            chars[i] = (char)(chars[i] ^ a);
        // 返回加密后的密文
        return new String(chars);
}

加密和解密是可逆的 安全性较低

2.Base64进行加密和解密

​ Base64是JDK自带的加密解密工具

	// base64加密
    public static String base64encode(byte[] input) throws Exception {
        Base64.Encoder encoder = Base64.getEncoder();
        return encoder.encodeToString(input);
    }

    // base64解密
    public static byte[] base64decode(String code){
        Base64.Decoder decoder = Base64.getDecoder();
        return  decoder.decode(code);
    }

​ Base64 加密时输入字节数组返回字符串,解密时输入字符串返回字节数组

3.使用MD5和sha256进行加密和解密

​ 需要引入commons-codec-jar

	// 使用MD5进行加密 不可逆 速度较快 返回一个16进制表示的字符串
    public static String md5encode(byte[] input){
        return DigestUtils.md5Hex(input);
    }

    // 使用sha256进行加密 不可逆 安全性较高 返回一个16进制表示的字符串
    public static String sha256encode(byte[] input){
        return DigestUtils.sha256Hex(input);
    }

​ MD5加密速度较快,安全性较异或和Base64操作高

​ sha256加密速度较MD5慢,安全性较MD5高

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java 提供了许多加密解密 PDF 文档的库。其中一些库是: 1. Apache PDFBox:它是一个开源库,可以用来创建、修改和提取 PDF 文档。它还提供了加密解密 PDF 文档的功能。 2. iText:它是一个广泛使用的 PDF 库,可以用来创建、修改和提取 PDF 文档。它还提供了加密解密 PDF 文档的功能。 以下是使用 Apache PDFBox 加密解密 PDF 文档的示例代码: 1. 加密 PDF 文档: ``` import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.encryption.AccessPermission; import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy; import java.io.File; import java.io.IOException; public class PDFEncryptor { public static void main(String[] args) throws IOException { // 加载 PDF 文档 PDDocument document = PDDocument.load(new File("example.pdf")); // 设置访问权限 AccessPermission ap = new AccessPermission(); ap.setCanPrint(false); // 设置加密策略 StandardProtectionPolicy spp = new StandardProtectionPolicy("password", "ownerpassword", ap); spp.setEncryptionKeyLength(128); // 应用加密策略 document.protect(spp); // 保存加密后的 PDF 文档 document.save("example-encrypted.pdf"); document.close(); } } ``` 2. 解密 PDF 文档: ``` import org.apache.pdfbox.pdmodel.PDDocument; import java.io.File; import java.io.IOException; public class PDFDecryptor { public static void main(String[] args) throws IOException { // 加载加密的 PDF 文档 PDDocument document = PDDocument.load(new File("example-encrypted.pdf"), "password"); // 解密 PDF 文档 document.setAllSecurityToBeRemoved(true); // 保存解密后的 PDF 文档 document.save("example-decrypted.pdf"); document.close(); } } ``` 这些示例代码使用 Apache PDFBox 库加密解密 PDF 文档。您可以根据需要使用其他库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宇0926

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值