为什么 ECDSA 会为相同的数据生成不同的签名,而 RSA 不会?

2023-11-25

考虑以下使用 RSA 的代码...

Example:

byte[] raw = Encoding.Default.GetBytes("Hello, World!");
RSA key = RSA.Create();

for (int index = 0; index < 5; index++)
{
    byte[] signed = key.SignData(raw, HashAlgorithmType.SHA256, RSASignaturePadding.Pkcs1);
    string hashed = signed.ToSha256String();
    Console.WriteLine(hashed);
}

Output:

043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89 043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89 043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89 043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89 043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89

现在考虑相同的代码,除了使用 ECDSA...

Example:

byte[] raw = Encoding.Default.GetBytes("Hello, World!");
ECDsa key = ECDsa.Create();

for (int index = 0; index < 5; index++)
{
    byte[] signed = key.SignData(raw, HashAlgorithmType.SHA256);
    string hashed = signed.ToSha256String();
    Console.WriteLine(hashed);
}

Output:

043a718774c572bd8a25adbeb1bfcd5c0256ae11cecf9f9c3f925d0e52beaf89 a31fe9656fc8d3a459e623dc8204e6d0268f8df56d734dac3ca3262edb5db883 a871c47a7f48a12b38a994e48a9659fab5d6376f3dbce37559bcb617efe8662d d7ef0a04f3c8055644677299a9414a75adcb15916eb48417416c9317ace2ff4f 779f5dd63960abda52a7da70464b92eedd47f84a8dffda2d672e6a99de1bab95

我期望的 RSA 签名输出; ECDSA,我没有。为什么 ECDSA 会为相同的数据生成不同的签名?


椭圆曲线数字签名算法(ECDSA)是经典 DSA 算法的改编版,依赖于加密安全随机数发生器。例如:ECDSA签名算法计算消息的哈希值,然后生成一个随机整数k并计算签名(一对整数{R, S} ). R计算自k, and S使用消息哈希+私钥+随机数计算k。所以,签名是不确定性由于随机性。

您可以尝试椭圆曲线here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 ECDSA 会为相同的数据生成不同的签名,而 RSA 不会? 的相关文章

  • json.net自定义jobject反序列化

    我正在尝试使用 JsonConvert DeserializeObject string 将字符串反序列化为可与动态一起使用的 jobject 来动态访问 json 文档 但是我想避免知道文档的大小写 以便我可以输入 dynamic doc
  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • C++ 长 switch 语句还是用地图查找?

    在我的 C 应用程序中 我有一些值充当代表其他值的代码 为了翻译代码 我一直在争论使用 switch 语句还是 stl 映射 开关看起来像这样 int code int value switch code case 1 value 10 b
  • 有没有办法在 xcode 上使用 c++0x ?我想使用 gcc 4.4 或更高版本

    我想使用 gcc 4 4 或更高版本进行 iphone 开发 有人知道怎么做吗 不 你不知道 相信我 你不会 Apple 仍保留 gcc 4 2 1 因为 4 2 2 及更高版本使用 GPLv3 这意味着他们必须放弃对其平台的控制 对于 i
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 检测到堆栈崩溃

    我正在执行我的 a out 文件 执行后 程序运行一段时间 然后退出并显示消息 stack smashing detected a out terminated Backtrace lib tls i686 cmov libc so 6 f
  • 在开关中使用“goto”?

    我看到了一个建议的编码标准 内容如下Never use goto unless in a switch statement fall through 我不跟 这个 例外 案例到底是什么样的 这证明了goto 此构造在 C 中是非法的 swi
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • C#6 中的长字符串插值行

    我发现 虽然字符串插值在应用于现有代码库的字符串 Format 调用时非常好 但考虑到通常首选的列限制 字符串对于单行来说很快就会变得太长 特别是当被插值的表达式很复杂时 使用格式字符串 您将获得一个可以拆分为多行的变量列表 var str
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 如何从 Rx Subscribe 回调异步函数?

    我想回调 Rx 订阅中的异步函数 例如 像那样 public class Consumer private readonly Service service new Service public ReplaySubject
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • 为什么以下 C 程序会出现总线错误?

    我认为这是第一个失败的 strtok 调用 好久没写C了 有点不知所措 非常感谢 include
  • LINQ 中的“from..where”或“FirstOrDefault”

    传统上 当我尝试从数据库中获取用户的数据时 我使用了以下方法 在某种程度上 DbUsers curUser context DbUsers FirstOrDefault x gt x u LoginName id string name c
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc

随机推荐

  • 如何从“浏览”选项卡中排除文件夹?

    我正在尝试排除上的几个文件夹ExploreVisual Studio Code 中的选项卡 为此 我添加了以下内容jsconfig json到我的项目的根目录 compilerOptions target ES6 exclude node
  • 如何捕获传单弹出窗口上的点击事件

    我在传单地图上同时打开多个弹出窗口 并且它们可以重叠 如果单击 我想将弹出窗口置于前面 虽然我可以轻松地点击地图map on click function e do something 我似乎无法用弹出窗口做同样的事情 如何捕获 L Pop
  • 带有圆角边缘的 ActionBar

    我想知道 是否可以使我的 ActionBar 具有圆角边缘 更具体地说 仅顶部圆角 左上 右上 我做了一些搜索 但大多数方法都已经过时 对我不起作用 我正在使用 AppCompat 支持库 v22 1 1 我已经制作了我想要实现的目标的图像
  • Next JS - getStaticProps 不返回任何内容

    我正在将 Next js 与上下文 API 和样式组件一起使用 但我似乎无法理解getStaticProps在职的 我读过其他帖子 他们经常谈论习俗 app我确实有 但在使用 context API 之前我从未遇到过这个问题 我也尝试过ge
  • 尝试时从 CultureInfo 中缺少国家和地点

    我需要本地化一个应用程序 并注意到有几个国家 地区没有出现在与cultureInfo 关联的县代码列表中 塞浦路斯就是一个例子 我想可能还有其他例子 如果我需要本地化塞浦路斯的设置 或其他缺失的设置 我将如何重命名我的资源文件 以便它们呈现
  • PHP PDO 多重选择查询始终删除最后一个行集

    我在使用 PDO 语句进行多项选择时遇到了似乎是错误的问题 我正在构建一个包含许多 SELECT 的 SQL 查询 无论它生成多少个 SELECT 语句 最后一个行集都会被删除 这是发生的事情的截断示例 pdo connection stu
  • 强制 C++ 结构紧密包装

    我正在尝试读取二进制文件 问题在于文件的创建者没有花时间将数据结构与其自然边界正确对齐 并且所有内容都包装得很紧 这使得使用 C 结构读取数据变得困难 有没有办法强制struct打包紧 Example struct short a int
  • 如果一个OU包含3000个用户,如何使用DirectorySearcher找到所有用户?

    我使用这段代码 DirectoryEntry objEntry DirectorySearcher objSearchEntry SearchResultCollection objSearchResult string strFilter
  • 从 UICollectionViewCell 使用 UICollectionView

    我有一个自定义 UICollectionViewCell 其内容也是一个集合 我想使用 UICollectionView 来显示其内容 这可能吗 我将如何实现这个目标 我制作了自定义 UICollectionViewCell 也继承自 UI
  • 是否可以在 Javascript 中发出跨域请求并设置自定义标头?

    由于您无法在 JSONP 调用上应用自定义标头 如何使用 jQuery 发出跨域请求并应用自定义标头 我基本上尝试使用 jQuery 访问 google 文档 并且需要传递身份验证令牌 var token my auth token aja
  • 影响 gcc 中的函数克隆/复制/持续传播

    跑步时gcc使用 optimizations on 时 当它认为函数位于热路径中或有常量传播到函数参数时 它会克隆 重复 C 函数 更具体地说 这似乎是由fipa cp clone option 有什么办法可以影响这个吗 例如 使用某些属性
  • 在 NHibernate 3 中使用 Linq 时的预加载

    我需要在 NHibernate 3 trunk 版本中急切加载 Linq 的帮助 我有这样的多对多关系 public class Post public int Id get set public IList
  • Android WebView 编译表单并使用 Javascript 提交

    我正在尝试填写此表格 http www lbalberti it whatsup asp codist 57247 我能够向两个文本框插入值 但按钮不起作用 Override protected void onCreate Bundle s
  • 如何使用FireMonkey截图(多平台)

    我还没有找到在 FMX Platform 中获取屏幕截图的功能 无论如何 其他地方都没有 对于 VCL 有很多答案 stackoverflow google 但是如何在 Windows 和 Mac OS X 中获取图像 位图或其他 的屏幕截
  • 如何从单个 Docker 映像定位多个 .NET Core 版本?

    我有一个目标库 NET 标准 2 0 为了验证兼容性 我想使用 NET Core 的当前版本和长期支持 LTS 版本运行单元测试 当写这个问题时 这些是 Target Framework Target framework moniker T
  • 如何以编程方式动态地为 UIButton 的背景图像着色?

    我正在开发一个应用程序 或者更确切地说是一些可重复使用的 框架 一旦它起作用我很乐意分享 在此应用程序中 用户应该能够从颜色主题列表中进行选择 因此 应用程序必须能够以某种相当动态的方式为其 UI 元素着色 对于按钮 所有着色都不起作用 此
  • 如何反序列化 JSON 数组?

    我在 CXF 中使用 Jackson 来序列化 反序列化数据 不幸的是 我在配置 CXF Jackson 来反序列化 JSON 数组时遇到困难 我很乐意帮助解决这个问题 到目前为止 大部分 json 数据都是对象格式 即 objectCol
  • 你可以为Python中的方法设置属性吗[重复]

    这个问题在这里已经有答案了 我想知道是否可以使用 setattr 将属性设置为类中的方法 如下所示 因为当我尝试时 我收到一个错误 该错误将在代码后显示 class Test def getString self var setattr s
  • 检查用户是否已在客户端登录

    有没有一种安全的方法来检查用户是否已登录应用程序而不是检查用户计算机中是否存在 sid cookie 我想允许用户仅在登录后才能继续访问页面上的某些链接 我在服务器端进行登录验证 但想避免请求行程 纯 JS 或 JQuery 解决方案将不胜
  • 为什么 ECDSA 会为相同的数据生成不同的签名,而 RSA 不会?

    考虑以下使用 RSA 的代码 Example byte raw Encoding Default GetBytes Hello World RSA key RSA Create for int index 0 index lt 5 inde