我正在尝试在pdf中编写IV
(初始化向量),key
和秘密token
(IV和密钥来自javax.crypto)。这样做的目的是将受保护的数据写入受密码保护的文本文件中(这样您就可以轻松地从代码中读取数据,而不能从读取器中读取数据)。
以下是我初始化每个字符串(我转换为字符串的字节数组)的方式
IV:
byte[] iv = new byte[128/8];
SecureRandom srandom = new SecureRandom();
srandom.nextBytes(iv);
String iv = new String(ivb, "UTF-8");
键:
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecretKey skey = kgen.generateKey();
byte[] keyb = skey.getEncoded();
String key = new String(keyb, "UTF-8");
秘密令牌:
byte[] stringBytes = TOKEN.getBytes("UTF-8");
byte[] encodedBytes = cipher.doFinal(stringBytes);
String token = new String(tokenb, "UTF-8");
然后,我将每个字符串都写成pdf:
BaseFont bf = BaseFont.createFont("arialuni.ttf",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
PdfWriter writer = PdfWriter.getInstance(document, zrsz);
writer.setEncryption("ownerPass".getBytes(), "userPass".getBytes(), 0, PdfWriter.ENCRYPTION_AES_128);
writer.createXmpMetadata();
document.open();
document.add(new Paragraph(iv, new Font(bf, 22)));
document.newPage();
document.add(new Paragraph(key, new Font(bf, 22)));
document.newPage();
document.add(new Paragraph(token, new Font(bf, 22)));
,但pdf文件的结果不同。例如,对于IV字符串
第一张图片:记事本中的IV,使用FileOutputStream处理.txt ;第二张图片:Acrobat Reader中的IV,使用document.add(新段落)
使用iText document.add(new Paragraph)
时某些字符会丢失。我读了另一个问题,我应该使用一种可以识别我要写的字符的字体。所以我问字体是否有问题,或者可能是其他原因。