class UmfRSACryptUtil

Public Instance Methods

encrypt(data) click to toggle source

使用公钥对明文字符串进行加密 data 明文字符串

# File lib/UmfRSACryptUtil.rb, line 18
def encrypt(data)
  public_key = OpenSSL::PKey::RSA.new(UMF_PUBLIC_KEY)
  encryptData = Base64.encode64(public_key.public_encrypt(data)).to_s.gsub(/\n/, '')
  return encryptData
end
mobileGenerateSign(plain,merId,signType) click to toggle source
# File lib/UmfRSACryptUtil.rb, line 62
def mobileGenerateSign(plain,merId,signType)
  priv_key_file = $privateKeyPath[merId]
  if !(File.exist?(priv_key_file))
    UmfLogger.logInfoMsg("[UMF SDK]传入的私钥文件不存在,私钥文件绝对路径 " + priv_key_file)
    return
  end
  pkey = OpenSSL::PKey::RSA.new(File.read(priv_key_file))
  signature = ""
  if signType == "sha1"
    signature = pkey.sign(OpenSSL::Digest::SHA1.new, plain).unpack("H*")[0].to_s.upcase
  elsif signType == "sha256"

  end
  UmfLogger.logInfoMsg("[UMF SDK]签名后密文 " + signature)
  return signature
end
sign(plain, merId, signType) click to toggle source

rsa私钥签名

# File lib/UmfRSACryptUtil.rb, line 26
def sign(plain, merId, signType)
  priv_key_file = $privateKeyPath[merId]
  if !(File.exist?(priv_key_file))
    UmfLogger.logInfoMsg("[UMF SDK]传入的私钥文件不存在,私钥文件绝对路径 " + priv_key_file)
    exit
  end
  pkey = OpenSSL::PKey::RSA.new(File.read(priv_key_file))
  signature = ""
  if signType == "sha1"
    signature = Base64.strict_encode64(pkey.sign(OpenSSL::Digest::SHA1.new, plain))
  elsif signType == "sha256"
    signature = Base64.strict_encode64(pkey.sign(OpenSSL::Digest::SHA256.new, plain))
  end
  UmfLogger.logInfoMsg("[UMF SDK]签名后密文 " + signature)
  return signature
end
verify(plain,sign,algorithmType) click to toggle source

联动返回签名的验签

# File lib/UmfRSACryptUtil.rb, line 45
def verify(plain,sign,algorithmType)
  public_key = OpenSSL::PKey::RSA.new(UMF_PUBLIC_KEY)
  if algorithmType == "sha1"
    verifyRet = public_key.verify(OpenSSL::Digest::SHA1.new, Base64.decode64(sign), plain)
  elsif algorithmType == "sha256"
    verifyRet = public_key.verify(OpenSSL::Digest::SHA256.new, Base64.decode64(sign), plain)
  end
  if verifyRet == true
    # puts "[UMF SDK] 平台响应数据验签成功"
    return true
  elsif verifyRet == false
    # puts "[UMF SDK] 平台响应数据验签失败"
    return false
  end
end