Method: Origami::Encryption::Standard::Dictionary#retrieve_user_password

Defined in:
lib/origami/encryption.rb

#retrieve_user_password(owner_password) ⇒ Object

Retrieve user password from owner password. Cannot be used with revision 5.



950
951
952
953
954
955
956
957
958
959
960
961
962
# File 'lib/origami/encryption.rb', line 950

def retrieve_user_password(owner_password)

    key = compute_owner_key(owner_password)

    if self.R == 2
        RC4.decrypt(key, self.O)
    elsif self.R == 3 or self.R == 4
        user_password = RC4.decrypt(xor(key, 19), self.O)
        19.times { |i| user_password = RC4.decrypt(xor(key, 18-i), user_password) }

        user_password
    end
end