RSA.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. namespace loyalsoft\Lib\Encrypt;
  3. class RSA
  4. {
  5. public static function encryptPrivate($data, $key)
  6. {
  7. $key = "-----BEGIN RSA PRIVATE KEY-----\n{$key}\n-----END RSA PRIVATE KEY-----";
  8. openssl_sign($data, $sign, $key, OPENSSL_ALGO_SHA1);
  9. return $sign;
  10. }
  11. public static function encryptPrivateFromFile($data, $fileName)
  12. {
  13. $key = file_get_contents($fileName);
  14. $res = openssl_get_privatekey($key);
  15. if (!$res) {
  16. throw new \Exception('私钥文件格式错误');
  17. }
  18. openssl_sign($data, $sign, $res, OPENSSL_ALGO_SHA1);
  19. openssl_free_key($res);
  20. return $sign;
  21. }
  22. public static function verifyPublic($data, $key, $sign)
  23. {
  24. $key = "-----BEGIN PUBLIC KEY-----\n{$key}\n-----END PUBLIC KEY-----";
  25. return 1 === openssl_verify($data, $sign, $key, OPENSSL_ALGO_SHA1);
  26. }
  27. public static function verifyPublicFromFile($data, $fileName, $sign)
  28. {
  29. $key = file_get_contents($fileName);
  30. $res = openssl_get_publickey($key);
  31. if (!$res) {
  32. throw new \Exception('公钥文件格式错误');
  33. }
  34. $result = openssl_verify($data, $sign, $res, OPENSSL_ALGO_SHA1);
  35. openssl_free_key($res);
  36. return 1 === $result;
  37. }
  38. }