如何混淆整数?

2024-05-06

我需要从 C# 中的整数列表生成唯一值的列表。我以为是 MD5 或类似的,但它们生成了太多字节。

整数大小为 2 个字节。

例如,我想获得单向通信

0 -> ARY812Q3
1 -> S6321Q66
2 -> 13TZ79K2

因此,在证明哈希值时,用户无法知道整数或干扰哈希值列表后面的序列。

现在,我尝试使用 MD5(我的号码),然后使用前 8 个字符。但是我在 51389 处发现了第一次碰撞。我还可以使用哪些其他替代方案?

正如我所说,我只需要一种方法。没有必要能够从哈希值中计算出整数。系统使用字典来查找它们。

UPDATE:

回复一些关于使用 GetHashCode() 的建议。 GetHashCode 返回相同的整数。我的目的是向最终用户隐藏整数。在这种情况下,整数是数据库的主键。我不想将这些信息提供给用户,因为他们可以推断出数据库中的记录数或每周记录的增量。

哈希值不是唯一的,所以也许我需要使用像 TripleDes 这样的加密,但我想使用快速而简单的东西。此外,TripleDes 也返回太多字节。

更新2: 我正在谈论哈希,这是一个错误。事实上,我试图混淆它,我尝试使用哈希算法,这不是一个好主意,因为它们不是唯一的。


2017 年 5 月更新

请随意使用(或修改)我开发的库,可通过 Nuget 安装:

安装包 Kent.Cryptography.Obfuscation

这会将非负 id(例如 127)转换为8 个字符的字符串, e.g. xVrAndNb,然后返回(使用一些可用选项来随机化每次生成的序列)。

用法示例

var obfuscator = new Obfuscator();
string maskedID = obfuscator.Obfuscate(15);

完整文档位于:Github https://github.com/kendtimothy/Cryptography.


旧答案

我很久以前就遇到过这个问题,但我在 StackOverflow 中找不到我想要的东西。所以我做了这个混淆类并在github上分享了它。

Obfuscation.cs - Github https://github.com/kendtimothy/Corazon-Heart/blob/master/Services/CObfuscation.cs

您可以通过以下方式使用它:

Obfuscation obfuscation = new Obfuscation();
string maskedValue = obfuscation.Obfuscate(5);
int? value = obfuscation.DeObfuscate(maskedValue);

也许这对未来的访客有帮助:)

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

如何混淆整数? 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 验证日期格式不起作用

    我在日期验证方面遇到问题 在我的视图中 我有一个 jQuery 日期选择器 我更改了格式yy mm dd to mm dd yy现在我收到客户端验证错误 例如 The value 02 25 2014 is not valid for Da
  • 对同一属性的 SPARQL 结果进行分组?

    我有以下 SPARQL 查询 PREFIX rdfs
  • equals 和 hashcode 的不同字段

    我同意这篇文章的声明在Java中重写equals和hashCode时应该考虑哪些问题 https stackoverflow com questions 27581 overriding equals and hashcode in jav
  • 如何在 Django 中获取 URL(带有协议和域)(无需请求)?

    我想在 cron 作业中发送邮件 邮件应包含 我的应用程序的链接 在 cron 作业中 我没有请求对象 并且无法使用 request build absolute uri 据我所知 网站框架可以在这里提供帮助 但没有给我协议 http vs
  • 用于生成 C++ 代码轮廓/图的工具 - 有这样的东西吗? [复制]

    这个问题在这里已经有答案了 我需要深入研究用 C 编写的软件组件并对其进行一些修改 我幻想生成一些代码映射 它将显示类之间的关系并引导我完成方法的流程 调用图 有这个工具吗 几年前 我使用 Rational Rose 建模工具 该工具具有对
  • API 与 SonarQube 5.6 和 Java Analyzer 4.0 与 Findbugs 3.3 或 Cobertura 1.6.3 不兼容

    SonarQube 对我的项目的分析失败了5 6 更新后Java插件从版本3 14 to 4 0 在我的 SonarQube 实例中 除了其他插件之外 我目前还有 Findbugs 插件 版本3 3 和 Cobertura 插件 1 6 3
  • 在 TensorFlow 中对伯努利随机变量进行采样

    给定一个包含伯努利分布均值的一维张量 如何使用给定的均值对相应的一维张量进行采样 TensorFlow 似乎只有random normal and random uniform实现的功能 我可以使用一些复杂的东西 例如 tf ceil tf
  • MonoGame真的跨平台吗?

    当我下载 MonoGame 我将使用它来代替 XNA 因为我使用的是 Mac 并解压它时 所有 MonoDevelop 解决方案文件都被命名为MonoGame Framework PLATFORM NAME sln with PLATFOR
  • 根据上一个 Flutter 的选择更改下拉按钮的选择

    我有2个DropdownButtonFormField我在那里可以选择汽车 我需要根据用户从 DropdownButtonFormField 中的第一个选择中选择的汽车型号来更改按钮的第二个选择 即 如果用户在第一个选择中选择梅赛德斯 则在
  • npm 安装 Angular/CLI 错误

    node v 8和 npm v5 正在尝试安装角度 cli从昨天开始全球范围内 每次都会遇到新的错误 Vipins Air vipingupta sudo npm install g angular cli npm 错误 代码 ETIMED
  • 将绝对路径和相对路径组合起来得到新的绝对路径

    我正在编写一个程序 其中一个组件必须能够采用给定的路径 例如 help index html or help 和基于该位置的相对路径 例如 otherpage index html or sub dir of help or help2 h
  • Django:什么时候运行 makemigrations?

    除了向模型添加 删除 修改字段之外 当我向模型添加或修改方法时 Django 还会检测到更改 所以我的问题是我应该跑步吗makemigrations每次我在模型中更改或添加新方法时 当您添加 更改模型方法时 您不需要运行 manage ma
  • Redis Docker compose无法处理RDB格式版本10

    我无法在 docker compose 文件中启动 redis 容器 我知道docker compose文件没问题 因为我的同事可以成功启动项目 我读到有一个删除 dump rdb 文件的解决方案 但我找不到它 我使用Windows机器 任
  • 验证准确性非常好,但预测很差

    我正在构建一个 keras 模型来对猫和狗进行分类 我使用具有瓶颈特征的迁移学习和 vgg 模型的微调 现在我得到了非常好的验证准确率 例如 97 但是当我进行预测时 我得到了关于分类报告和混淆矩阵的非常糟糕的结果 可能是什么问题呢 这是微
  • 如何删除 Objective-C 中的子视图?

    我已以编程方式将 UIButton 和 UITextView 作为子视图添加到我的视图中 notesDescriptionView UIView alloc initWithFrame CGRectMake 0 0 320 460 note
  • SQL Server 2000 - 将查询分成 15 分钟的块

    我有一个连续时间数据集 我想使用 sql 将其分成 15 分钟的块 如果我能帮忙的话 我不想必须创建一个新表才能做到这一点 i e 时间 计数09 15 109 30 309 45 010 00 210 15 3 有谁知道我该怎么做 我认为
  • 使用 Python 3.7+ 中的 wfastcgi 以及 Numpy、Pandas 等在 IIS 上部署 Python Flask 应用程序

    使用 wfastcgi 在 IIS 上部署 python 3 7 Flask 或 Dash 应用程序时 有许多很棒的教程可以让 hello work 程序正常运行 例如 https medium com bilalbayasut deplo
  • mongodb 备份是自动进行的吗?

    我们使用两个 mongodb 服务 现在 swisscom 开发者控制台中有一个备份按钮 我们是否必须使用此按钮手动进行备份 还是自动进行进一步备份 如果是 何时以及多久一次 我们会自动进行备份 但仅用于灾难恢复 我们不向客户提供此备份 所
  • 重用cocos2d动作

    是否可以 并且是一个好的实践 为使用相同操作的多个 CCSprite 重用相同的操作 因为如果我有 10 个 CCSprite 所有这些都需要缩放 我创建了一个名为scaleAction 的缩放操作 是否可以对精灵重复使用相同的动作 当我尝
  • 如何混淆整数?

    我需要从 C 中的整数列表生成唯一值的列表 我以为是 MD5 或类似的 但它们生成了太多字节 整数大小为 2 个字节 例如 我想获得单向通信 0 gt ARY812Q3 1 gt S6321Q66 2 gt 13TZ79K2 因此 在证明哈