首页 > 编程语言 >三种非对称加密算法比较,以及JWT中的对应

三种非对称加密算法比较,以及JWT中的对应

时间:2024-05-16 14:57:49浏览次数:25  
标签:JWT RSA 算法 签名 非对称 加密算法 DSA

非对称密钥加密算法

  1. RSA

    • RSA是一种非对称加密算法,它需要使用两个密钥:公开密钥(public key)和私有密钥(private key)。
    • 如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;反之,如果用私有密钥对数据进行加密,则只有用对应的公开密钥才能解密。
  2. DSA

    • DSA(Digital Signature Algorithm)也使用非对称加密,它主要用于数字签名与验证。
    • DSA同样包含一对公钥和私钥,用于签名的生成和验证过程。
  3. ECC

    • ECC(Elliptic Curve Cryptography)属于非对称加密算法,其安全性基于椭圆曲线离散对数问题的困难性。
    • ECC使用公钥和私钥进行加密和解密操作,与RSA和DSA相似,但ECC在处理速度、带宽要求和存储空间上具有优势。

综上所述,RSA、DSA和ECC都是基于非对称密钥的加密算法,它们在安全性、性能和效率方面有所不同,但共同特点是都依赖于一对公钥和私钥来进行加密和解密操作。

下面是一个表格,对比RSA、DSA和ECC(Elliptic Curve Cryptography)三种加密算法的主要特点:

算法 RSA DSA ECC
密钥长度 较长(通常为1024、2048或4096位) 相对较短(通常为1024位) 较短(通常为160、192、224、256位)
安全性 高,基于大数分解问题的困难性 中等,基于离散对数问题的困难性 高,基于椭圆曲线离散对数问题的困难性
加密/解密速度 相对较慢 中等速度 相对较快
签名/验证速度 相对较慢 中等速度 相对较快
密钥生成速度 相对较慢 中等速度 相对较快
密钥对存储空间 较大 中等 较小
适用场景 数据加密、数字签名、密钥交换等 数字签名、密钥交换等 数据加密、数字签名等
标准化和广泛接受程度 广泛接受,已成为许多安全标准的一部分 较广泛接受,用于一些特定的安全协议 越来越受欢迎,正在逐渐替代传统的加密算法

请注意,表格中的评价是相对的,具体情况可能因具体实现和应用场景而有所差异。此外,加密算法的安全性还取决于密钥的管理和保护措施。

RSA、DSA和ECC是三种常用的公钥加密算法,每种算法都有其独特的优势和适用场景。RSA是最早被广泛使用的公钥加密算法之一,提供了较高的安全性,但加密和解密速度相对较慢。DSA(Digital Signature Algorithm)主要用于数字签名和密钥交换,速度中等。ECC(Elliptic Curve Cryptography)是一种较新的加密算法,使用较短的密钥长度就能提供与传统加密算法相当的安全性,加密和解密速度相对较快,因此在一些对性能要求较高的场景下越来越受欢迎。

JWT 对应算法

在JWT(JsonWeb Token)中,RSA、DSA和ECC可以对应于不同的签名算法。以下是它们在JWT中的对应情况:

  1. RSA

    • 对应JWT中的RS系列签名算法。
    • 常见的RSA签名算法在JWT中有RS256、RS384和RS512。
      • RS256:使用RSA和SHA-256算法进行签名。
      • RS384:使用RSA和SHA-384算法进行签名。
      • RS512:使用RSA和SHA-512算法进行签名。
  2. DSA

    • DSA算法在JWT中并不直接对应一个特定的签名方法,因为JWT规范主要关注的是RSA和ECDSA等算法。然而,DSA的变种可能在某些实现中被支持作为自定义签名方法。
    • 请注意,DSA虽然可用于数字签名,但在JWT的常见实现中可能不是首选或标准支持的算法。
  3. ECC (Elliptic Curve Cryptography)

    • 对应JWT中的ES系列签名算法。
    • 常见的ECDSA签名算法在JWT中有ES256、ES384和ES512。
      • ES256:使用椭圆曲线加密算法ECDSA和SHA-256进行签名。
      • ES384:使用ECDSA和SHA-384进行签名。
      • ES512:使用ECDSA和SHA-512进行签名。

总的来说,在JWT中,RSA对应于RS系列的签名算法,ECC对应于ES系列的签名算法,而DSA虽然在数字签名中有应用,但在JWT中不是主要支持的算法。在选择JWT签名算法时,通常会选择RSA或ECDSA算法,因为它们广泛被支持和标准化。

总结:我们使用ES256算法

我们看下长度:

image

image

image

image

标签:JWT,RSA,算法,签名,非对称,加密算法,DSA
From: https://www.cnblogs.com/del88/p/18195963

相关文章

  • 全局异常处理和jwt介绍与使用
    全局异常处理和jwt介绍与使用1.全局异常处理#APIView的dispatch的时候--》三大认证,视图类的方法中--》出了异常--》被异常捕获--》都会执行一个函数:#只要出了异常,都会执行dispatch中的这句,这个函数response=self.handle_exception(exc)#handle_exception源码分析d......
  • jwt揭秘(含源码示例和视频)
    jwt揭秘摘自:https://www.cnblogs.com/wupeiqi/p/11854573.html武沛齐博客JSONWebTokens,是一种开发的行业标准RFC7519,用于安全的表示双方之间的声明。目前,jwt广泛应用在系统的用户认证方面,特别是现在前后端分离项目。1.jwt认证流程在项目开发中,一般会按照上图所示......
  • FastApi-tortoise-jwt-mysql
    抽了半天时间学了一下fastapi,为了方便,代码没分结构。importsysimportjwtimportuvicorn,asyncio,signal,osfromfastapiimportFastAPI,HTTPException,Dependsfromfastapi.securityimportOAuth2PasswordBearer,OAuth2PasswordRequestFormfromtortoiseimportfie......
  • apisix~jwt-auth插件
    在网关开启jwt-auth插件之后,你的网关就具有了jwt解析和校验的功能,主要是校验jwttoken的有效性,包含过期时间和签名等。https://apisix.apache.org/docs/apisix/plugins/jwt-auth/支持的签名算法"HS256""HS512""RS256""ES256"如果使用非对称算法rs256和es256时,需要配置公......
  • Gateway、Shiro 和 JWT 三者的区别?
    Gateway、Shiro和JWT都是用于认证和授权的技术,但它们在功能、应用场景和实现方式上存在一些区别。1.功能Gateway:API网关,用于管理API的访问权限,并提供一些通用功能,例如负载均衡、熔断限流等。Shiro:ApacheShiro,是一个强大的权限框架,用于控制用户对系统的访问权限。JWT:J......
  • 非对称加密中,加解密和签名
    在非对称加密中,加解密使用的密钥取决于具体的用途:加密:通常情况下,当想要确保数据的机密性,即希望只有特定接收方能够读取信息时,发送方会使用接收方的公钥对数据进行加密。这样一来,只有拥有对应私钥的接收方才能够解密并查看原始信息。解密:对应地,接收方收到加密后的数据后,......
  • simple-jwt的简单使用
    【一】安装pipinstalldjangorestframework-simplejwt【二】配置#settings.pyINSTALLED_APPS=[ ...'rest_framework',#add'rest_framework_simplejwt',#add]REST_FRAMEWORK={'DEFAULT_PERMISSION_CLASSES......
  • [web]cookie session和token(jwt)
    cookie:用户登录后,服务器生成一个cookie返回,并要求浏览器set-cookie,存储一下,下次访问时带上cookie,即可区分用户cookie可以被篡改session:信息存储在服务端,客户端cookie中存一个sessionid服务端有额外的存储成本负载均衡需要考虑session共享查询session是查库操作,耗时高......
  • DRF之JWT认证
    DRF之JWT认证【一】JWTWT(JSONWebToken)是一种开放标准(RFC7519),用于在网络上传输声明的一种紧凑且自包含的方式。JWT可以使用HMAC算法或是使用RSA或ECDSA等公钥/私钥对进行签名。通常,它用于在身份提供者和服务之间传递被认证的用户身份信息,以便于在用户和服务之间安全地......
  • jwt的思路
    我们通常在项目中使用登录接口的时候,会利用jwt的token实现一个对其他接口的一个请求头这层的一个验证,那么如何去应用呢,正常来讲我们需要写出两个功能1.jwt基本的加密和解密2.jwt的一个拦截器,检验token请求头使用依赖jdk1.8仅需<dependency><......