index.uts 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. import { CommonSync, sm4Sync,ivSync,sm2Validate } from '../interface.uts';
  2. import { Insecure, SHA256 } from 'CryptoKit';
  3. import { AES, ECB, CBC } from "CryptoSwift";
  4. import { GMSm3Utils, GMSm4Utils, GMSm2Utils } from "GMObjC";
  5. import { PublicKey, ClearMessage, EncryptedMessage } from "SwiftyRSA";
  6. // md5加密
  7. export const md5Sync : CommonSync = function (md5Str : string) : string {
  8. let data = md5Str.data(using = String.Encoding.utf8)!
  9. let MD5Digest = Insecure.MD5.hash(data = data)
  10. let ht = MD5Digest.map((x : UInt8) : String => {
  11. let str = String(format = "%02hhx", x)
  12. if (str != nil) {
  13. return str;
  14. } else {
  15. return "";
  16. }
  17. })
  18. return ht.join('');
  19. }
  20. // base64加密
  21. export const base64EncodeSync : CommonSync = function (str : string) : string {
  22. const originalData = str.data(using = String.Encoding.utf8)!
  23. const base64EncodedString = originalData.base64EncodedString()
  24. return base64EncodedString;
  25. }
  26. // base64解密
  27. export const base64DecodeSync : CommonSync = function (str : string) : string {
  28. let decodedData = Data(base64Encoded = str)!
  29. if (decodedData != nil) {
  30. let originalString = String(data = decodedData, encoding = String.Encoding.utf8)!
  31. if (originalString != nil) {
  32. return originalString
  33. } else {
  34. return "";
  35. }
  36. } else {
  37. return "";
  38. }
  39. }
  40. // SHA1加密
  41. export const sha1Sync : CommonSync = function (str : string) : string {
  42. let data = str.data(using = String.Encoding.utf8)!
  43. let SHA1Digest = Insecure.SHA1.hash(data = data)
  44. let ht = SHA1Digest.map((x : UInt8) : String => {
  45. let str = String(format = "%02hhx", x)
  46. if (str != nil) {
  47. return str;
  48. } else {
  49. return "";
  50. }
  51. })
  52. return ht.join('');
  53. }
  54. // SHA256加密
  55. export const sha256Sync : CommonSync = function (str : string) : string {
  56. let data = str.data(using = String.Encoding.utf8)!
  57. let SHA256Digest = SHA256.hash(data = data)
  58. let ht = SHA256Digest.map((x : UInt8) : String => {
  59. let str = String(format = "%02hhx", x)
  60. if (str != nil) {
  61. return str;
  62. } else {
  63. return "";
  64. }
  65. })
  66. return ht.join('');
  67. }
  68. // AES对称加密
  69. export const aesEncryptSync : sm4Sync = function (plainText : string, key : string) : string {
  70. let keyData = key.data(using = String.Encoding.utf8)!
  71. let plainTextData = plainText.data(using = String.Encoding.utf8)!
  72. try {
  73. let aes = UTSiOS.try(AES(key = keyData.bytes, blockMode = ECB(), padding = Padding.pkcs7))
  74. // 开始加密
  75. let encrypted = UTSiOS.try(aes.encrypt(plainTextData.bytes))
  76. // 将加密结果转成base64形式
  77. return encrypted.toBase64()
  78. } catch (e) {
  79. console.log(e);
  80. return "";
  81. }
  82. }
  83. // AES对称解密
  84. export const aesDecryptSync : sm4Sync = function (encryptedBase64 : string, key : string) : string {
  85. let keyData = key.data(using = String.Encoding.utf8)!
  86. try {
  87. let encryptedData = Data(base64Encoded = encryptedBase64)!
  88. let aes = UTSiOS.try(AES(key = keyData.bytes, blockMode = ECB(), padding = Padding.pkcs7))
  89. // 开始加密
  90. let decryptedBytes = UTSiOS.try(aes.decrypt(encryptedData.bytes))
  91. let decryptedData = Data(decryptedBytes)
  92. let decryptedString = String(data = decryptedData, encoding = String.Encoding.utf8)!
  93. if (decryptedString != nil) {
  94. return decryptedString
  95. } else{
  96. return "";
  97. }
  98. } catch (e) {
  99. console.log(e);
  100. return "";
  101. }
  102. }
  103. // 国产SM3加密
  104. export const sm3EncryptSync : CommonSync = function (dataString : string) : string {
  105. let plainData = dataString.data(using = String.Encoding.utf8)!
  106. let res = GMSm3Utils.hash(with = plainData)!
  107. return res;
  108. }
  109. // 国产SM4ECB加密
  110. export const sm4ECBEncryptSync : sm4Sync = function (dataString : string, keySM4 : string) : string {
  111. let res = GMSm4Utils.ecbEncryptText(dataString,key=keySM4)!
  112. return res;
  113. }
  114. // 国产SM4ECB解密
  115. export const sm4ECBDecryptSync : sm4Sync = function (dataString : string, keySM4 : string) : string {
  116. let res = GMSm4Utils.ecbDecryptText(dataString,key=keySM4)!
  117. return res;
  118. }
  119. // 国产SM4CBC加密
  120. export const sm4CBCEncryptSync : ivSync = function (dataString : string, keySM4 : string, iv: string) : string {
  121. let res = GMSm4Utils.cbcEncryptText(dataString,key=keySM4,iv=iv)!
  122. return res;
  123. }
  124. // 国产SM4CBC解密
  125. export const sm4CBCDecryptSync : ivSync = function (dataString : string, keySM4 : string, iv: string) : string {
  126. let res = GMSm4Utils.cbcDecryptText(dataString,key=keySM4,iv=iv)!
  127. return res;
  128. }
  129. // 国产SM2非对称公钥加密
  130. export const sm2EncryptSync : sm4Sync = function (dataString : string, publicKey : string) : string {
  131. let res = GMSm2Utils.encryptText(dataString,publicKey=publicKey)!
  132. return res;
  133. }
  134. // 国产SM2非对称私钥解密
  135. export const sm2DecryptSync : sm4Sync = function (dataString : string, privateKey : string) : string {
  136. let res = GMSm2Utils.decrypt(toText=dataString,privateKey=privateKey)!
  137. return res;
  138. }
  139. // sm2签名
  140. export const sm2PubSignSync : sm4Sync = function (dataString : string, privateKey : string) : string {
  141. const sign = GMSm2Utils.signText(dataString, privateKey=privateKey, userID=nil)!;
  142. return sign;
  143. }
  144. // sm2验签
  145. export const sm2PubSignValSync : sm2Validate = function (dataString : string, publicKey : string, sign : string) : boolean {
  146. const verifySign = GMSm2Utils.verifyText(dataString, signRS=sign, publicKey=publicKey, userID=nil);
  147. return verifySign;
  148. }
  149. // hmacSHA1加密
  150. export const hmacSHA1Sync : sm4Sync = function (plaintext : string, key : string) : string {
  151. let res = GMSm3Utils.hmac(GMHashType.SHA1 ,key=key,plaintext=plaintext)!
  152. return res;
  153. }
  154. // AES CBC对称加密
  155. export const aesCBCEncryptSync : ivSync = function (plainText : string, key : string, iv: string) : string {
  156. let keyData = key.data(using = String.Encoding.utf8)!
  157. let ivData = iv.data(using = String.Encoding.utf8)!
  158. let plainTextData = plainText.data(using = String.Encoding.utf8)!
  159. try {
  160. let aes = UTSiOS.try(AES(key = keyData.bytes, blockMode = CBC(iv=ivData.bytes), padding = Padding.pkcs7))
  161. // 开始加密
  162. let encrypted = UTSiOS.try(aes.encrypt(plainTextData.bytes))
  163. // 将加密结果转成base64形式
  164. return encrypted.toBase64()
  165. } catch (e) {
  166. console.log(e);
  167. return "";
  168. }
  169. }
  170. // AES CBC对称解密
  171. export const aesCBCDecryptSync : ivSync = function (encryptedBase64 : string, key : string, iv: string) : string {
  172. let keyData = key.data(using = String.Encoding.utf8)!
  173. let ivData = iv.data(using = String.Encoding.utf8)!
  174. try {
  175. let encryptedData = Data(base64Encoded = encryptedBase64)!
  176. let aes = UTSiOS.try(AES(key = keyData.bytes, blockMode = CBC(iv=ivData.bytes), padding = Padding.pkcs7))
  177. // 开始加密
  178. let decryptedBytes = UTSiOS.try(aes.decrypt(encryptedData.bytes))
  179. let decryptedData = Data(decryptedBytes)
  180. let decryptedString = String(data = decryptedData, encoding = String.Encoding.utf8)!
  181. if (decryptedString != nil) {
  182. return decryptedString
  183. } else{
  184. return "";
  185. }
  186. } catch (e) {
  187. console.log(e);
  188. return "";
  189. }
  190. }
  191. // RSA非对称加密
  192. export const rsaEncryptSync : sm4Sync = function (dataString : string, publicStr: string) : string {
  193. try {
  194. let publicKey = UTSiOS.try(PublicKey(pemEncoded = publicStr))
  195. let clear = UTSiOS.try(ClearMessage(string = dataString, using = String.Encoding.utf8))
  196. let encrypted = UTSiOS.try(clear.encrypted(with = publicKey, padding = Padding.PKCS1))
  197. return encrypted.base64String
  198. } catch (e) {
  199. console.log(e);
  200. return "";
  201. }
  202. }
  203. // RSA非对称解密
  204. export const rsaDecryptSync : sm4Sync = function (dataString : string, privateStr: string) : string {
  205. try {
  206. let privateKey = UTSiOS.try(PrivateKey(pemEncoded = privateStr))
  207. let encrypted = UTSiOS.try(EncryptedMessage(base64Encoded = dataString))
  208. let clear = UTSiOS.try(encrypted.decrypted(with = privateKey, padding = Padding.PKCS1))
  209. let base64String = clear.base64String
  210. return base64DecodeSync(base64String)
  211. } catch (e) {
  212. console.log(e);
  213. return "";
  214. }
  215. }