如何将整数转换为基数62(如十六进制,但使用这些数字:'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ').
我一直在努力为它找到一个好的Python库,但它们似乎都在转换字符串.Python base64模块只接受字符串并将一个数字转换为四个字符.我正在寻找类似于URL缩短器使用的东西.
我如何在python中创建一个随机的,16个字符的base-62 salt?我需要它用于协议,我不知道从哪里开始.谢谢.
我有一个脚本转换为base 62(A-Za-z0-9)但是如何从MD5中获取一个数字?
我在很多地方读过,因为MD5中的数字大于php可以处理的整数,它将是不准确的...因为我想要一个简短的URL,并且不打算使用整个哈希,也许只有8个字符它....
所以我的问题是如何获得MD5哈希的部分数量?
仅使用部分MD5哈希是一个坏主意吗?
我需要一个base_convert()
从base 2到base 62 的函数,但是我缺少我需要使用的数学,我知道由于PHP的限制,我需要使用bcmath,这很好.
像这样的函数将数字转换为基数10和从另一个基数转换为62,但我希望实现相同的功能base_convert()
,例如:只有一个可以在任意碱基之间转换的函数.
我发现了一个似乎这样做的功能,但是它给了我一些冗余和慢速代码的感觉,如果我认识德语,我想稍微调整一下,我不知道.=(
这是一个更易读的函数版本:
function bc_base_convert($value, $quellformat, $zielformat)
{
$vorrat = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
if (min($quellformat, $zielformat) < 2)
{
trigger_error('Bad Format min: 2', E_USER_ERROR);
}
if (max($quellformat, $zielformat) > strlen($vorrat))
{
trigger_error('Bad Format max: ' . strlen($vorrat), E_USER_ERROR);
}
$dezi = '0';
$level = 0;
$result = '';
$value = trim(strval($value), "\r\n\t +");
$vorzeichen = '-' === $value{0} ? '-' : '';
$value = ltrim($value, "-0");
$len = strlen($value); …
Run Code Online (Sandbox Code Playgroud) 标准 UUID 很长,您无法通过双击选择整个内容。
例如 123e4567-e89b-12d3-a456-426655440000
我喜欢较短的 ID。
我喜欢能够双击一个 ID 来选择它。
我的问题是:将标准 ID 编码为 22(ish) 个字符长的 base62 字母数字字符串是否有任何问题?
例如 71jbvv7LfRKYp19gtRLtkn
编辑:添加上下文
我们的需求是在 NoSQL 数据存储服务(如 DynamoDB)中存储一般数据。碰撞不应该发生,但我的理解是与 UUID 的碰撞风险可以忽略不计。标准 UUID 将满足我们的需求,所以我要问的是......在 base62 中编码是否存在标准 UUID 不存在的任何差异、额外风险或不可预见的问题?
谢谢。
我正在寻找将字符串转换为BASE62的c#代码,如下所示:
http://www.molengo.com/base62/title/base62-encoder-decoder
我需要那些用于URL编码的编码和解码方法.
我想在 URL 中传递河豚加密字符串,并希望像 base64 一样对其进行编码,但没有任何特殊字符,像 base62 这样的东西就很好(0-9a-zA-Z)。所以我想做的是使用base64_encode 转换河豚加密字符串,并将base64 转换为base62。
我知道如何使 base64 url 安全的解决方案,但我真的不希望字符串中出现任何特殊字符。Convert_base() 仅适用于基数最大为 36 的情况,数学扩展可以转换为基数最大为 62 的情况。
有人知道如何使用 PHP 将 Base64 字符串转换为 Base62 吗?
我正在尝试缩短 UUID 值(存储在数据库中作为 UUID,而不是字符串)嵌入到 URL 中。我知道 URL 的 Base64,但试图看看我是否可以在没有破折号和下划线字符的情况下制作它。所以我想将 UUID 转换为 base62。经过大量的谷歌搜索,我发现:
对此没有标准(类似于 RFC2045),对吗?
最重要的是,它没有适当的实现。我发现了很多关于如何做到这一点的片段,但有一些说明“这是一个天真的实现”或其他东西。是否有适当的实现(我不介意准确解释映射应该如何完成,只要它正确完成)?
Apache Commons Codec 和 Guava 中有一些基类为 Base32 和 Base64 扩展,但我发现为 Base62 扩展它并不容易。甚至有可能做到吗(考虑到映射根本不同的事实)?
谢谢。
我正在寻找一个在node.js中生成base62 UUID的解决方案.我想避免的base64,我打算创建基于这些的UUID和像字符的文件夹=
,\
,-
,_
(如在一些实现)不是人类/文件系统友好.
Base62还具有比典型的v4 UUID更短的优势(在我的上下文中).
更新(为了清楚起见):我之前应该说我已经尝试过使用base62
模块,但这并不能解决我的问题,因为base62
javascript整数中的数字只能精确到52位,而UUID有128位.
谁能解释一下下面的代码吗?那或者向我指出一些可以阐明一些观点的资源:)
它将整数转换为 base62 字符串。
private static $_characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
private static function _convertBase($num)
{
$base = strlen(self::$_characters);
$string = '';
for ($t = floor(log10($num) / log10($base)); $t >= 0; $t--) {
$a = floor($num / pow($base, $t));
$string .= substr(self::$_characters, $a, 1);
$num = $num - ($a * pow($base, $t));
}
return $string;
}
Run Code Online (Sandbox Code Playgroud)
更新:我想问的是:有人可以解释一下下面的算法吗?:) 谢谢。
注意:如果你只是一个jQuery开发人员,这篇文章中的一些内容可能看起来有点复杂(Base62编码等) - 实际上并非如此.虽然更多技术细节与问题相关,但核心是jQuery不会选择带有大写字母的东西.谢谢!
嗨伙计!
所以我有一个由Ajax生成的列表.单击列表标题时,将发送其ID,并且列表项将显示在其旁边.标准的东西.
由于我们使用的是auto_increment ID,因此我们不希望用户知道数据库中有多少提交内容.所以,我将它编码到Base62,然后再解码.[请注意,这是 - 或者应该与问题无关].
因此,在生成我的列表时,输出此代码.我们在jQuery旁边使用CodeIgniter PHP - 这是在数据库结果的循环中.$this->basecrypt->encode()
是一个简单的CI库,用于将整数(ID)转换为Base62:
$('#title-<?php echo $this->basecrypt->encode($row->codeid); ?>').click(function() {
alert("clicked");
[...]
Run Code Online (Sandbox Code Playgroud)
然后,在页面的下方:
<div id="title-<?php echo $this->basecrypt->encode($row->codeid);?>" class="title">
Run Code Online (Sandbox Code Playgroud)
如您所见,这是在同一个循环中生成的 - 并查看输出的源代码显示,例如:
$('#title-1T').click[...]
然后 <div id="title-1T" [...]
所以,jQuery不应该有任何麻烦,对吧?在我们开始使用Base62-ID之前,一切正常.我相信jQuery在包含大写字母时不能/不会选择我们的ID.
现在请原谅我,如果我错了 - 相对来说,我对jQuery很新 - 但为了测试我的观点,我把我$this->basecrypt->encode()
改成了Base36.之前,它正在使用0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
After,它正在使用0123456789abcdefghijklmnopqrstuvwxyz
没有大写字母,jQuery可以选择(并出于测试目的显示警报).
那我该怎么办?在Base36中继续使用数字和小写字母是否安全 - 如果是这样,那么最大整数大小是多少?如果没有,我可以做些什么来解决jQuery有问题的选择过程?
谢谢!
插口
编辑:下面是页面中的一些示例代码.
这是文件ajaxlist.php中返回的脚本的一部分 - 它是从Ajax调用的,并在页面加载后几秒钟出现.我在alert("clicked");
开头附近添加,看看是否会出现 - 遗憾的是,它不会...... $(文档).ready(function(){
$('#title-<?php echo $this->basecrypt->encode($row->codeid); ?>').click(function() {
alert("clicked");
var form_data = {
id: <?php echo …
Run Code Online (Sandbox Code Playgroud) base62 ×11
php ×4
uuid ×3
math ×2
python ×2
algorithm ×1
base64 ×1
c# ×1
codeigniter ×1
converters ×1
encoding ×1
encryption ×1
java ×1
javascript ×1
jquery ×1
md5 ×1
node.js ×1
salt ×1