module SuningPay::RSA
Constants
- MAX_DECRYPT_LENGTH
- MAX_ENCRYPT_LENGTH
SuningPay
提供的KEY长度为2048
Public Class Methods
decrypt_base64_msg(key, message)
click to toggle source
分段解密:解密前Base64解码
# File lib/suning_pay/rsa.rb, line 57 def self.decrypt_base64_msg(key, message) bytes_array = Base64::decode64 message input_length = bytes_array.length decryt_str, offset, i = "", 0, 0 begin decryt_bytes = bytes_array[offset, MAX_DECRYPT_LENGTH] decryt_str << key.private_decrypt(decryt_bytes) #解密 offset = (i += 1) * MAX_DECRYPT_LENGTH end while input_length - offset > 0 decryt_str end
decrypt_msg(key, message)
click to toggle source
分段解密:解密前转回2进制
# File lib/suning_pay/rsa.rb, line 26 def self.decrypt_msg(key, message) #bytes_array = Base64::decode64 message message_arr = [message] bytes_array = message_arr.pack("H*") input_length = bytes_array.length decryt_str, offset, i = "", 0, 0 begin decryt_bytes = bytes_array[offset, MAX_DECRYPT_LENGTH] decryt_str << key.private_decrypt(decryt_bytes) #解密 offset = (i += 1) * MAX_DECRYPT_LENGTH end while input_length - offset > 0 decryt_str end
encrypt_base64_msg(key, message)
click to toggle source
分段加密:加密后Base64
# File lib/suning_pay/rsa.rb, line 43 def self.encrypt_base64_msg(key, message) bytes_array = message.unpack("C*") input_length = bytes_array.length encryt_str, offset, i = "", 0, 0 begin encryt_bytes = bytes_array[offset, MAX_ENCRYPT_LENGTH] encryt_str << key.public_encrypt(encryt_bytes.pack("C*")) #加密 offset = (i += 1) * MAX_ENCRYPT_LENGTH end while input_length - offset > 0 Base64::strict_encode64(encryt_str) end
encrypt_msg(key, message)
click to toggle source
分段加密:加密后结果转16进制
# File lib/suning_pay/rsa.rb, line 11 def self.encrypt_msg(key, message) bytes_array = message.unpack("C*") input_length = bytes_array.length encryt_str, offset, i = "", 0, 0 begin encryt_bytes = bytes_array[offset, MAX_ENCRYPT_LENGTH] encryt_str << key.public_encrypt(encryt_bytes.pack("C*")) #加密 offset = (i += 1) * MAX_ENCRYPT_LENGTH end while input_length - offset > 0 encryt_str.unpack("H*")[0].upcase #Base64::strict_encode64(encryt_str) end