ruby中rsa加密加签以及md5、hash加密以及des加解密方法整理

摘要:
结束#HSA加密方法Defigest_sha?
#RSA公钥加密,加签;des 不同加密算法的加密解密方法
# encoding:utf-8
# author:anion
require 'openssl'
require 'base64'
require 'digest'

#一 rsa加签 base64编码
  def rsa_sign data, key
  rkey =OpenSSL::PKey::RSA.new key
  sign= rkey.sign('sha1',data)
  signature = Base64.encode64(sign)
  signature.gsub!(" ",'')
 end

  #二 rsa加密 并编码

def rsa_encrypt(public_key,data)
rsa= OpenSSL::PKey::RSA.new(Base64.decode64(public_key)) #是否需要decode依赖传的数据
#rsa=OpenSSL::Pkey::RSA.new(File.read('./public_key.pem'))
rsa_data = rsa.public_encrypt(data)

result =Base64.encode64(rsa_data)
result.gsub!(" ",'')
end

#HSA加密方法整理
def digest_sha?(data,type)

case type
when 1
Digest::SHA1.hexdigest(data)
when 256
Digest::SHA256.hexdigest(data)
when 384
Digest::SHA384.hexdigest(data)
when 512
Digest::SHA512.hexdigest(data)
end
end
 
ALG='DES-EDE3'   # OpenSSL::Cipher::Cipher.ciphers : 可以获取ruby中所有支持的加解密
def des3_encrypt(des_key, des_text)
des =OpenSSL::Cipher::Cipher.new(ALG)
des.encrypt
des.key=des_key
result = des.update(des_text)
result << des.final
data=Base64.encode64(result)
data.gsub!(" ",'')
end

def des3_decrypt(des_key,des_text)
des =OpenSSL::Cipher::Cipher.new(ALG)
des.decrypt
des.padding=7 # set pckspadding1--7
des.key=des_key
text = Base64.decode64(des_text)
result = des.update(text).gsub(/ || /,'')
result << des.final
result
end

require 'digest/md5'
#MD5加密
Digest::MD5.hexdigest(data)
 

免责声明:文章转载自《ruby中rsa加密加签以及md5、hash加密以及des加解密方法整理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇修改 terminal 主机名和用户名显示在VUE中报Duplicate keys detected: '0'. This may cause an update error的报错原因以及解决办法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

阿里云ali-oss图片增加水印

先附上文档连接 : https://helpcdn.aliyun.com/document_detail/44957.html 水印文字或图片必须经过一下转化 URL安全的Base64位编码 在图片处理服务里会有很多参数需要变成Base64位编码,参考RFC4648。注意这里的URL 安全Base64位编码只是用在水印操作某些特定参数(文字水印的文字内容,...

资产管理 cmdb之ansible 获取服务器硬件、软件等信息

    cmdb抓取服务信息的方式有很多种,可以使用自动化工具saltstack、ansible、puppet,或者使用其它模块直接ssh远程连接抓取服务器信息。这里记录一下用ansible的API接口调用setup模块抓取。 实验使用两台机器 IP 系统 软件 192.168.93.137 centos6.5_x64 ansible 1.9.4...

聊一聊Jmeter用IF控制器处理接口依赖

背景 上一篇关于 JMeter 的多接口测试,虽说可以把几个步骤的串联起来,但是会比较简单和单调。 还有许多业务场景,会根据上一个接口的返回,再决定要不要调用第二个接口或者是掉用其他接口。 还是拿大家常见的查询订单举个例,首先可以是查询订单列表,然后再查订单详情。 试想一下如果订单列表是空,还有必要再查询订单详情吗? 其实再查询订单详情其实意义已经不大了,...

【ECharts】04 数据交互

ECharts 异步加载数据 ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOption 填入数据和配置项就行。 ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOptio...

js Base64与字符串互转

1、base64加密 在页面中引入base64.js文件,调用方法为: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>base64加密</title> <script type="text/jav...

MATLAB中导入数据:importdata函数

用load函数导入mat文件大家都会。可是今天我拿到一个数据,文件后缀名竟然是‘.data’。该怎么读呢? 我仅仅好用matlab界面Workspace区域的“import data”button手工导入该文件。恩,还好,竟然成功了。顺便提一下,这个“import data”button功能非常强大,连excel文件都能导入。 可是假设在脚本里怎样导入这...