2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.aaa.api;
10 import java.security.MessageDigest;
11 import java.util.concurrent.locks.ReentrantReadWriteLock;
12 import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
15 * @Author - Sharon Aicler (saichler@cisco.com)
17 public class SHA256Calculator {
19 private static MessageDigest md = null;
20 private static ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
21 private static WriteLock writeLock = lock.writeLock();
23 public static String generateSALT() {
24 StringBuffer salt = new StringBuffer();
25 for (int i = 0; i < 12; i++) {
26 int random = (int) (Math.random() * 24 + 1);
27 salt.append((char) (65 + random));
29 return salt.toString();
32 public static String getSHA256(byte data[], String salt) {
33 byte SALT[] = salt.getBytes();
34 byte temp[] = new byte[data.length + SALT.length];
35 System.arraycopy(data, 0, temp, 0, data.length);
36 System.arraycopy(SALT, 0, temp, data.length, SALT.length);
43 md = MessageDigest.getInstance("SHA-256");
44 } catch (Exception err) {
45 err.printStackTrace();
62 return removeSpecialCharacters(new String(by));
65 public static String getSHA256(String password, String salt) {
66 return getSHA256(password.getBytes(), salt);
69 public static String removeSpecialCharacters(String str) {
70 StringBuilder buff = new StringBuilder();
71 for (int i = 0; i < str.length(); i++) {
72 if (str.charAt(i) != '\'' && str.charAt(i)!=0) {
73 buff.append(str.charAt(i));
76 return buff.toString();