Moved Hash specific methods from Sys -> HashUtil
This commit is contained in:
parent
47e73efb52
commit
b1d4fba159
74
src/dorkbox/util/HashUtil.java
Normal file
74
src/dorkbox/util/HashUtil.java
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010 dorkbox, llc
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package dorkbox.util;
|
||||||
|
|
||||||
|
import org.bouncycastle.crypto.digests.SHA256Digest;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bouncycastle hashes!
|
||||||
|
*/
|
||||||
|
public
|
||||||
|
class HashUtil {
|
||||||
|
/**
|
||||||
|
* gets the SHA256 hash + SALT of the specified username, as UTF-16
|
||||||
|
*/
|
||||||
|
public static
|
||||||
|
byte[] getSha256WithSalt(String username, byte[] saltBytes) {
|
||||||
|
if (username == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
byte[] charToBytes = Sys.charToBytes(username.toCharArray());
|
||||||
|
byte[] userNameWithSalt = Sys.concatBytes(charToBytes, saltBytes);
|
||||||
|
|
||||||
|
|
||||||
|
SHA256Digest sha256 = new SHA256Digest();
|
||||||
|
byte[] usernameHashBytes = new byte[sha256.getDigestSize()];
|
||||||
|
sha256.update(userNameWithSalt, 0, userNameWithSalt.length);
|
||||||
|
sha256.doFinal(usernameHashBytes, 0);
|
||||||
|
|
||||||
|
return usernameHashBytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gets the SHA256 hash of the specified string, as UTF-16
|
||||||
|
*/
|
||||||
|
public static
|
||||||
|
byte[] getSha256(String string) {
|
||||||
|
byte[] charToBytes = Sys.charToBytes(string.toCharArray());
|
||||||
|
|
||||||
|
SHA256Digest sha256 = new SHA256Digest();
|
||||||
|
byte[] usernameHashBytes = new byte[sha256.getDigestSize()];
|
||||||
|
sha256.update(charToBytes, 0, charToBytes.length);
|
||||||
|
sha256.doFinal(usernameHashBytes, 0);
|
||||||
|
|
||||||
|
return usernameHashBytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gets the SHA256 hash of the specified byte array
|
||||||
|
*/
|
||||||
|
public static
|
||||||
|
byte[] getSha256(byte[] bytes) {
|
||||||
|
|
||||||
|
SHA256Digest sha256 = new SHA256Digest();
|
||||||
|
byte[] hashBytes = new byte[sha256.getDigestSize()];
|
||||||
|
sha256.update(bytes, 0, bytes.length);
|
||||||
|
sha256.doFinal(hashBytes, 0);
|
||||||
|
|
||||||
|
return hashBytes;
|
||||||
|
}
|
||||||
|
}
|
@ -27,8 +27,6 @@ import java.util.Map;
|
|||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import org.bouncycastle.crypto.digests.SHA256Digest;
|
|
||||||
|
|
||||||
@SuppressWarnings({"unused", "WeakerAccess"})
|
@SuppressWarnings({"unused", "WeakerAccess"})
|
||||||
public final
|
public final
|
||||||
class Sys {
|
class Sys {
|
||||||
@ -294,56 +292,6 @@ class Sys {
|
|||||||
return concatBytes;
|
return concatBytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gets the SHA256 hash + SALT of the specified username, as UTF-16
|
|
||||||
*/
|
|
||||||
public static
|
|
||||||
byte[] getSha256WithSalt(String username, byte[] saltBytes) {
|
|
||||||
if (username == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
byte[] charToBytes = Sys.charToBytes(username.toCharArray());
|
|
||||||
byte[] userNameWithSalt = Sys.concatBytes(charToBytes, saltBytes);
|
|
||||||
|
|
||||||
|
|
||||||
SHA256Digest sha256 = new SHA256Digest();
|
|
||||||
byte[] usernameHashBytes = new byte[sha256.getDigestSize()];
|
|
||||||
sha256.update(userNameWithSalt, 0, userNameWithSalt.length);
|
|
||||||
sha256.doFinal(usernameHashBytes, 0);
|
|
||||||
|
|
||||||
return usernameHashBytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gets the SHA256 hash of the specified string, as UTF-16
|
|
||||||
*/
|
|
||||||
public static
|
|
||||||
byte[] getSha256(String string) {
|
|
||||||
byte[] charToBytes = Sys.charToBytes(string.toCharArray());
|
|
||||||
|
|
||||||
SHA256Digest sha256 = new SHA256Digest();
|
|
||||||
byte[] usernameHashBytes = new byte[sha256.getDigestSize()];
|
|
||||||
sha256.update(charToBytes, 0, charToBytes.length);
|
|
||||||
sha256.doFinal(usernameHashBytes, 0);
|
|
||||||
|
|
||||||
return usernameHashBytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gets the SHA256 hash of the specified byte array
|
|
||||||
*/
|
|
||||||
public static
|
|
||||||
byte[] getSha256(byte[] bytes) {
|
|
||||||
|
|
||||||
SHA256Digest sha256 = new SHA256Digest();
|
|
||||||
byte[] hashBytes = new byte[sha256.getDigestSize()];
|
|
||||||
sha256.update(bytes, 0, bytes.length);
|
|
||||||
sha256.doFinal(hashBytes, 0);
|
|
||||||
|
|
||||||
return hashBytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* this saves the char array in UTF-16 format of bytes
|
* this saves the char array in UTF-16 format of bytes
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user