You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/07/03 03:20:00 UTC

[jira] [Commented] (DRILL-5634) Add Crypto and Hash Functions

    [ https://issues.apache.org/jira/browse/DRILL-5634?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16071882#comment-16071882 ] 

ASF GitHub Bot commented on DRILL-5634:
---------------------------------------

GitHub user cgivre opened a pull request:

    https://github.com/apache/drill/pull/865

    DRILL-5634 - Add Crypto and Hash Functions

    

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/cgivre/drill master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/drill/pull/865.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #865
    
----
commit a5accbd0d9d2defb6de488680b6c650021ae9931
Author: cgivre <cg...@gmail.com>
Date:   2017-07-03T03:13:02Z

    Added Crypto Functions

commit 35f8002cf95a9376da3bcf930e9b0de585e6c952
Author: cgivre <cg...@gmail.com>
Date:   2017-07-03T03:18:39Z

    Removed extraneous code

----


> Add Crypto and Hash Functions
> -----------------------------
>
>                 Key: DRILL-5634
>                 URL: https://issues.apache.org/jira/browse/DRILL-5634
>             Project: Apache Drill
>          Issue Type: New Feature
>          Components: Functions - Drill
>    Affects Versions: 1.10.0
>            Reporter: Charles Givre
>             Fix For: 1.11.0
>
>
> This library contains a collection of cryptography-related functions for Apache Drill. It generally mirrors the crypto functions in MySQL.  The package includes:
> * **`aes_encrypt()`/ `aes_decrypt()`**: implement encryption and decryption of data using the official AES (Advanced Encryption Standard) algorithm, previously known as “Rijndael.”
>  `AES_ENCRYPT()` encrypts the string `str` using the key string `key_str` and returns a binary string containing the encrypted output. `AES_DECRYPT()` decrypts the encrypted string `crypt_str` using the key string `key_str` and returns the original cleartext string. If either function argument is NULL, the function returns NULL.
> ```sql
> > SELECT aes_encrypt( 'encrypted_text', 'my_secret_key' ) AS aes FROM (VALUES(1));
> +---------------------------+
> |            aes            |
> +---------------------------+
> | JkcBUNAn8ByKWCcVmNrKMA==  |
> +---------------------------+
>  > SELECT aes_encrypt( 'encrypted_text', 'my_secret_key' ) AS encrypted,
>  aes_decrypt(aes_encrypt( 'encrypted_text', 'my_secret_key' ),'my_secret_key') AS decrypted 
>  FROM (VALUES(1));
> +---------------------------+-----------------+
> |         encrypted         |    decrypted    |
> +---------------------------+-----------------+
> | JkcBUNAn8ByKWCcVmNrKMA==  | encrypted_text  |
> +---------------------------+-----------------+
> ```
> * **`md5(<text>)`**:  Returns the md5 hash of the text. (https://en.wikipedia.org/wiki/MD5)
> Usage:
> ```sql
> > select md5( 'testing' ) from (VALUES(1));
> +-----------------------------------+
> |              EXPR$0               |
> +-----------------------------------+
> | ae2b1fca515949e5d54fb22b8ed95575  |
> +-----------------------------------+
> ```
> * **`sha(<text>`) / `sha1(<text>)`**: Calculates an SHA-1 160-bit checksum for the string, as described in RFC 3174 (Secure Hash Algorithm). (https://en.wikipedia.org/wiki/SHA-1)  The value is returned as a string of 40 hexadecimal digits, or NULL if the argument was NULL. Note that `sha()` and `sha1()` are aliases for the same function. 
> ```sql
> > select sha1( 'testing' ) from (VALUES(1));
> +-------------------------------------------+
> |                  EXPR$0                   |
> +-------------------------------------------+
> | dc724af18fbdd4e59189f5fe768a5f8311527050  |
> +-------------------------------------------+
> ```
> * **`sha2(<text>`) / `sha256(<text>)`**: Calculates an SHA-2 256-bit checksum for the string. (https://en.wikipedia.org/wiki/SHA-2)  The value is returned as a string of hexadecimal digits, or NULL if the argument was NULL. Note that `sha2()` and `sha256()` are aliases for the same function. 
> ```sql
> > select sha2( 'testing' ) from (VALUES(1));
> +-------------------------------------------------------------------+
> |                              EXPR$0                               |
> +-------------------------------------------------------------------+
> | cf80cd8aed482d5d1527d7dc72fceff84e6326592848447d2dc0b0e87dfc9a90  |
> +-------------------------------------------------------------------+
> ```
> Additionally, there are also `sha384(<text>)` and `sha512(<text>)` functions which return SHA-2 hashes with 384 and 512 bit checksums.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)