private byte[] computeRC4key(byte[] ownerPassword, int encRevision, int length) { MessageDigest md = MessageDigests.getMD5(); byte[] digest = md.digest(truncateOrPad(ownerPassword)); if (encRevision == 3 || encRevision == 4) { for (int i = 0; i < 50; i++) { // this deviates from the spec - however, omitting the length // parameter prevents the file to be opened in Adobe Reader // with the owner password when the key length is 40 bit (= 5 bytes) md.update(digest, 0, length); digest = md.digest(); } } byte[] rc4Key = new byte[length]; System.arraycopy(digest, 0, rc4Key, 0, length); return rc4Key; }
MessageDigest sha1 = MessageDigests.getSHA1(); byte[] mdResult = sha1.digest(sha1Input);
MessageDigest md = MessageDigests.getSHA1(); byte[] mdResult = md.digest(sha1Input);
newKey[newKey.length - 1] = (byte) (genNumber >> 8 & 0xff); MessageDigest md = MessageDigests.getMD5(); md.update(newKey); if (useAES)
MessageDigest sha1 = MessageDigests.getSHA1(); byte[] mdResult = sha1.digest(sha1Input);
MessageDigest md = MessageDigests.getMD5(); md.update(padded);
MessageDigest md = MessageDigests.getSHA1(); byte[] mdResult = md.digest(sha1Input);
MessageDigest md = MessageDigests.getMD5(); md.update( ENCRYPT_PADDING );
MessageDigest md = MessageDigests.getMD5(); BigInteger time = BigInteger.valueOf(System.currentTimeMillis()); md.update(time.toByteArray());
private byte[] computeRC4key(byte[] ownerPassword, int encRevision, int length) { MessageDigest md = MessageDigests.getMD5(); byte[] digest = md.digest(truncateOrPad(ownerPassword)); if (encRevision == 3 || encRevision == 4) { for (int i = 0; i < 50; i++) { // this deviates from the spec - however, omitting the length // parameter prevents the file to be opened in Adobe Reader // with the owner password when the key length is 40 bit (= 5 bytes) md.update(digest, 0, length); digest = md.digest(); } } byte[] rc4Key = new byte[length]; System.arraycopy(digest, 0, rc4Key, 0, length); return rc4Key; }
private byte[] computeRC4key(byte[] ownerPassword, int encRevision, int length) { MessageDigest md = MessageDigests.getMD5(); byte[] digest = md.digest(truncateOrPad(ownerPassword)); if (encRevision == 3 || encRevision == 4) { for (int i = 0; i < 50; i++) { // this deviates from the spec - however, omitting the length // parameter prevents the file to be opened in Adobe Reader // with the owner password when the key length is 40 bit (= 5 bytes) md.update(digest, 0, length); digest = md.digest(); } } byte[] rc4Key = new byte[length]; System.arraycopy(digest, 0, rc4Key, 0, length); return rc4Key; }
newKey[newKey.length - 1] = (byte) (genNumber >> 8 & 0xff); MessageDigest md = MessageDigests.getMD5(); md.update(newKey); if (useAES)
newKey[newKey.length - 1] = (byte) (genNumber >> 8 & 0xff); MessageDigest md = MessageDigests.getMD5(); md.update(newKey); if (useAES)
MessageDigest md = MessageDigests.getMD5(); md.update(padded);
MessageDigest md = MessageDigests.getMD5(); md.update(padded);
MessageDigest md = MessageDigests.getMD5(); md.update( ENCRYPT_PADDING );
MessageDigest md = MessageDigests.getMD5(); md.update( ENCRYPT_PADDING );
MessageDigest md = MessageDigests.getMD5(); BigInteger time = BigInteger.valueOf(System.currentTimeMillis()); md.update(time.toByteArray());