假设您的银行职员给您一个任意密码,例如hel34/hjal0@#
,如果不将其写入论文,您将无法记住它。困境:你永远不会在纸上写密码。因此,您尝试创建一个加密的一对一映射,其中您只写一个纸张的密钥,只写数字,并将剩余的垃圾留给您的服务器。当然,密码可以包含任意内容。
mvds有正确的想法,改变基础。 Eugene发现错误,因此一对一地图应该是:
prime1*prime2*...*primeN <----- encoding -------> String
答案 0 :(得分:2)
我不知道我是否真的理解你的问题,但你可以看到你的输入是一个基数为62的数字(26 + 26 + 10),你可以读作一个整数,然后以任何方式处理它你喜欢。然后将结果转换回您的自定义base-62格式。
举个例子,你的数字范围是[0-9a-zA-Z]
,所以0
= 0十进制,Z
= 61十进制,10
将是62十进制。
然后9aZ
将是9 * 62 * 62 + 10 * 62 + 61 = 35277十进制,其中素数因子为3 * 11 * 1069。
将它们转换回来会导致:9aZ = 3 * b * hg
答案 1 :(得分:0)
首先,您的数字代码不能短于密码:较短的密码会降低保护强度。因此,您需要保持密码完整(并对其进行编码)或使密码更长。
在谈论编码时,您可以使用BASE10或BASE16编码。使用Base16编码,每个原始字符有2个字符(如果我们保持在ASCII字符集中),Base10编码的长度会有所不同,为了确保正确解码,最终每个原始ASCII字符使用3个字符。