2014-03-13 37 views
1

我想加密數值。java將數字值加密爲字母數字值

例如;

該值是數字。

String ="8502352664"; 

我想將其加密爲字母數字+數字。但是我只需要5個字符的輸出。

8502352664>AB123 

AB123是輸出示例。

任何人都可以給我加密的例子嗎?

謝謝。

+0

你能澄清你的問題嗎?什麼的例子? – UmNyobe

+2

這不能沒有碰撞!如果您想以AB123格式顯示十位數字。 – kai

+0

請這樣想。我有一個customerId。它是8502352664.我想通過瀏覽器鏈接使用它(獲取參數)。但我不希望沒有人看到它這樣。所以我想隱藏它。還有一些人不得不使用這個ID作爲5char(AB123)。可能嗎? – user3414231

回答

0

我可以想到這樣的事情。
如果你有一些字符串,你可以將它轉換爲:11233378 -> B1A2C3A7A8
一個單一的,B爲雙,C爲tripple。

或者你可以凱撒克菲爾做到這一點,移動你的字符串的價值n。 11233378 -> 22344489

只是一些想法..

+0

,仍然不會減少到5的長度。 –

0

大多數現代加密散列函數將不適合5 * 8位,所以它需要更多然後5個字符來呈現他們。

如果你願意在安全性上妥協,雖然你可以使用類似Javas hashCode的字符串,然後將其轉換爲字符。

的代碼會是這個樣子

public String createHash(String s) throws UnsupportedEncodingException { 
    int hashcode = s.hashCode(); 
    byte[] bytes = BigInteger.valueOf(hashcode).toByteArray(); 

    return new String(bytes, "UTF-8"); 
} 
0

下面是我對http://www.w3schools.com/tags/ref_urlencode.asp發現的符號列表,我採取了它的第100個符號。要將長度爲10(基數爲10)的字符串轉換爲其長度的一半,您需要使用基數100.查看下面的列表,將字符串「8502352664」分隔爲| 85 | 02 | 35 | 26 | 64 |並用左邊的對應部分替換它們。

例如,如果我得到了203,它會讓我|02|03| - >!"

space %20 - #01 
! %21  - #02 
" %22  - #03 
# %23  - #04 
$ %24  - #05 
% %25  - and so on.... 
& %26 
' %27 
( %28 
) %29 
* %2A 
+ %2B 
, %2C 
- %2D 
. %2E 
/ %2F 
0 %30 
1 %31 
2 %32 
3 %33 
4 %34 
5 %35 
6 %36 
7 %37 
8 %38 
9 %39 
: %3A 
; %3B 
< %3C 
= %3D 
> %3E 
? %3F 
@ %40 
A %41 
B %42 
C %43 
D %44 
E %45 
F %46 
G %47 
H %48 
I %49 
J %4A 
K %4B 
L %4C 
M %4D 
N %4E 
O %4F 
P %50 
Q %51 
R %52 
S %53 
T %54 
U %55 
V %56 
W %57 
X %58 
Y %59 
Z %5A 
[ %5B 
\ %5C 
] %5D 
^ %5E 
_ %5F 
` %60 
a %61 
b %62 
c %63 
d %64 
e %65 
f %66 
g %67 
h %68 
i %69 
j %6A 
k %6B 
l %6C 
m %6D 
n %6E 
o %6F 
p %70 
q %71 
r %72 
s %73 
t %74 
u %75 
v %76 
w %77 
x %78 
y %79 
z %7A 
{ %7B 
| %7C 
} %7D 
~ %7E 
    %7F 
` %80 
    %81 
‚ %82 
ƒ %83 - #100 

也有講究%7F和81%,它們都是空的性格,我不知道,如果它們的處理方式是相同的,但出於安全目的,您可以選擇不在此列表中的任何符號並替換它們。

相關問題