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

hudson.plugins.mysql.crypt.Cipher Maven / Gradle / Ivy

The newest version!
/**
 * The person or persons who have associated work with this document (the
 * "Dedicator" or "Certifier") hereby either (a) certifies that, to the best of
 * his knowledge, the work of authorship identified is in the public domain of
 * the country from which the work is published, or (b) hereby dedicates
 * whatever copyright the dedicators holds in the work of authorship identified
 * below (the "Work") to the public domain. A certifier, moreover, dedicates any
 * copyright interest he may have in the associated work, and for these
 * purposes, is described as a "dedicator" below.
 *
 * A certifier has taken reasonable steps to verify the copyright status of this
 * work. Certifier recognizes that his good faith efforts may not shield him
 * from liability if in fact the work certified is not in the public domain.
 *
 * Dedicator makes this dedication for the benefit of the public at large and to
 * the detriment of the Dedicator's heirs and successors. Dedicator intends this
 * dedication to be an overt act of relinquishment in perpetuity of all present
 * and future rights under copyright law, whether vested or contingent, in the
 * Work. Dedicator understands that such relinquishment of all rights includes
 * the relinquishment of all rights to enforce (by lawsuit or otherwise) those
 * copyrights in the Work.
 *
 * Dedicator recognizes that, once placed in the public domain, the Work may be
 * freely reproduced, distributed, transmitted, used, modified, built upon, or
 * otherwise exploited by anyone for any purpose, commercial or non-commercial,
 * and in any way, including by methods that have not yet been invented or
 * conceived.
 */
package hudson.plugins.mysql.crypt;

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

/**
 * This class produces an encrypted string based upon the selected cipher or
 * digest method.
 *
 * @author Alex Ackerman
 */
public class Cipher
{
    /**
     * Digest algorithm names from the Java Cruptography Architecture Standard
     * Algorithm Name Documentation found at the following address:
     *
     * http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html
     *
     */
    public static final String MD5 = "MD5";
    public static final String SHA1 = "SHA-1";
    public static final String SHA256 = "SHA-256";
    public static final String SHA384 = "SHA-384";
    public static final String SHA512 = "SHA-512";
    public static final String CRYPT = "Crypt";

    public Cipher(String type)
    {
        this.encryptionMethod = type;
        salt = null;
    }

    public Cipher(String type, String salt)
    {
        this.encryptionMethod = type;
        this.salt = salt;
    }

    public String encode(String plaintext) throws EncryptionException
    {
        if ((salt != null) || encryptionMethod.equals(this.CRYPT))
        {
            return JCrypt.crypt(salt, plaintext);
        }
        else
        {
            try
            {
                MessageDigest md = MessageDigest.getInstance(encryptionMethod);
                md.reset();
                byte[] textBytes = plaintext.getBytes();
                md.update(textBytes);
                return md.toString();
            }
            catch (NoSuchAlgorithmException ex)
            {
                throw new EncryptionException();
            }
        }
    }

    private String encryptionMethod;
    private String salt;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy