应该是可以用 C extension 写一个的,现在的 OpenSSL 应该是已经支持 SM4 了
可以考虑 fork 一份 https://github.com/ruby/openssl 直接自己动手
openssl 已经内置 SM4 了,ruby 可以直接调:
def sm4_decrypt(key, data)
decipher = OpenSSL::Cipher.new("sm4-ecb")
decipher.decrypt
decipher.key = Base64.decode64(key)
decipher.update(Base64.decode64(data)) + decipher.final
end