All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.kapil.framework.crypto.SecureHashDigester Maven / Gradle / Ivy

Go to download

This is a set of utilities and classes that I have found useful over the years. In my career spanning over a decade, I have time and again written the same code or some part of the code over and over again. I never found the time to collate the details in a reusable library. This project will be a collection of such files. The work that I have been doing is more than 5 years old, however the project has been conceived in 2011.

There is a newer version: 1.2.1
Show newest version
/*******************************************************************************
 * Copyright 2011 @ Kapil Viren Ahuja
 * 
 * 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 com.kapil.framework.crypto;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import org.apache.commons.lang.exception.ExceptionUtils;

import com.kapil.framework.lang.StringUtils;
import com.kapil.framework.logger.ILogger;
import com.kapil.framework.logger.LogFactory;

/**
 * 

* Computes a text digest using the Secure Hash Algorithm (SHA-1). SHA-1 produces a 160-bit * one-way digest of the text. The digest is said to be one-way since the original text cannot be recovered from it. *

*

* SHA-1 is said to be crypto-analytically secure since it is not only impossible to retrieve the original * text from its digest but also because there is a very small probability that two totally dissimilar text messages * will produce the same digest value. *

*/ public final class SecureHashDigester implements IDigester { private static final ILogger LOGGER = LogFactory.getInstance().getLogger(SecureHashDigester.class); /** *

* Computes an SHA-1 digest of a text message. *

* *

* The returned digest has a prefix of {SHA} indicating that it is a Secure Hash digest. *

* * @param text A {@link java.lang.String} containing the text to be digested. * @return A printable {@link java.lang.String} digest. */ public String digest(String text) { return addPrefix(getRawDigest(text)); } /** * Adds prefix {SHA} to a digest if it is not blank. * * @param digest An array of bytes containing the digest value. * @return {@link java.lang.String} containing digest in Base-64 encoded form, with the algorith name prefixed. */ private String addPrefix(byte[] digest) { return digest == null ? null : "{SHA}" + Base64Util.encode(digest); } /** * Computes SHA-1 digest for a text message. * * @param text {@link java.lang.String} text. * @return An array of bytes containing the digest. */ public byte[] getRawDigest(String text) { byte[] digest = null; if (StringUtils.isNotBlank(text)) { try { MessageDigest messageDigester = MessageDigest.getInstance("SHA"); digest = messageDigester.digest(text.getBytes()); } catch (NoSuchAlgorithmException e) { LOGGER.error(ExceptionUtils.getFullStackTrace(e)); } } return digest; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy