Module: QyWechat::Prpcrypt
Instance Method Summary collapse
Instance Method Details
#decrypt(aes_key, text, corpid) ⇒ Object
对密文进行解密. text 需要解密的密文
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/qy_wechat/helpers/prpcrypt.rb', line 8 def decrypt(aes_key, text, corpid) status = 200 text = Base64.decode64(text) text = handle_cipher(:decrypt, aes_key, text) result = PKCS7Encoder.decode(text) content = result[16...result.length] len_list = content[0...4].unpack("N") xml_len = len_list[0] xml_content = content[4...4 + xml_len] from_corpid = content[xml_len+4...content.size] # TODO: refactor if corpid != from_corpid Rails.logger.debug("#{__FILE__}:#{__LINE__} Failure because corpid != from_corpid") status = 401 end [xml_content, status] end |
#encrypt(aes_key, text, corpid) ⇒ Object
加密
27 28 29 30 31 32 33 34 35 |
# File 'lib/qy_wechat/helpers/prpcrypt.rb', line 27 def encrypt(aes_key, text, corpid) text = text.force_encoding("ASCII-8BIT") random = SecureRandom.hex(8) msg_len = [text.length].pack("N") text = "#{random}#{msg_len}#{text}#{corpid}" text = PKCS7Encoder.encode(text) text = handle_cipher(:encrypt, aes_key, text) Base64.encode64(text) end |