一些常用加密方式
程序员文章站
2022-07-12 20:18:45
...
sign = OpenSSL::Digest::SHA256.hexdigest("#{access_token}#{access_sign}#{noncestr}")
JSON.parse Base64.decode64(resp)
signature = Base64.encode64(OpenSSL::HMAC.digest('sha1', token['ACCESS_SIGN'], "#{timestamp}#{noncestr}")).strip
token = Digest::MD5.hexdigest(Settings.qichacha_key.to_s + timespan + Settings.qichacha_secret_key).upcase
---------
# new 对象
@verifier = ActiveSupport::MessageVerifier.new('123456')
# => #<ActiveSupport::MessageVerifier:0x007fe522132ba8 @secret="123456", @digest="SHA1", @serializer=Marshal>
# new 对象并指定serializer 为 YAML
@verifier = ActiveSupport::MessageVerifier.new('123456', serializer: YAML)
# => #<ActiveSupport::MessageVerifier:0x007fe522103448 @secret="123456", @digest="SHA1", @serializer=Psych>
要加密的内容可为任何形式的对象,MessageVerifier对象会以指定的对象序列化方法进行序列化。 示例中我们加密的对象是一个包含用户id及过期时间的数组:[user_id, time]
# 加密
cookies[:remember_me] = @verifier.generate([@user.id, 2.weeks.from_now])
# 解密
id, time = @verifier.verify(cookies[:remember_me])
# 应用:判断是否过期并查找用户
if time < Time.now
@current_user = User.find(id)
end
JSON.parse Base64.decode64(resp)
signature = Base64.encode64(OpenSSL::HMAC.digest('sha1', token['ACCESS_SIGN'], "#{timestamp}#{noncestr}")).strip
token = Digest::MD5.hexdigest(Settings.qichacha_key.to_s + timespan + Settings.qichacha_secret_key).upcase
---------
# new 对象
@verifier = ActiveSupport::MessageVerifier.new('123456')
# => #<ActiveSupport::MessageVerifier:0x007fe522132ba8 @secret="123456", @digest="SHA1", @serializer=Marshal>
# new 对象并指定serializer 为 YAML
@verifier = ActiveSupport::MessageVerifier.new('123456', serializer: YAML)
# => #<ActiveSupport::MessageVerifier:0x007fe522103448 @secret="123456", @digest="SHA1", @serializer=Psych>
要加密的内容可为任何形式的对象,MessageVerifier对象会以指定的对象序列化方法进行序列化。 示例中我们加密的对象是一个包含用户id及过期时间的数组:[user_id, time]
# 加密
cookies[:remember_me] = @verifier.generate([@user.id, 2.weeks.from_now])
# 解密
id, time = @verifier.verify(cookies[:remember_me])
# 应用:判断是否过期并查找用户
if time < Time.now
@current_user = User.find(id)
end
上一篇: 基于html2canvas的长图分享
下一篇: railsAPI接收Base64文件