initial commit
This commit is contained in:
7
README.md
Normal file
7
README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
## Encrypt text!
|
||||
This repo uses php to encrypt and decrypt text. Encrypted text is
|
||||
downloaded into a text file, which stores all relevent information in
|
||||
XML.
|
||||
To decrypt, upload the file in decrypt.php and type in the encryption
|
||||
key. The contents of the txt file are obtained and used along with the
|
||||
key to decrypt the original text.
|
||||
18
decrypt.php
Normal file
18
decrypt.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Decrypt file</title>
|
||||
<meta name=viewport content=width=device-width,initial-scale=1.0>
|
||||
<link rel=stylesheet href=style.css type=text/css>
|
||||
</head>
|
||||
<body>
|
||||
<form class=center method=POST action=decryptFunc.php enctype="multipart/form-data">
|
||||
<input type=file name=encDoc><br>
|
||||
<input id=key type=text name=key placeholder='Decryption key'><br>
|
||||
<button type=submit name=submit value=submit id=submitWriting>SUBMIT</button>
|
||||
</form>
|
||||
<br>
|
||||
<p class=center><a href=/cs/encrypt.php>Encrypt a file</a></p>
|
||||
</body>
|
||||
</html>
|
||||
14
decryptFunc.php
Normal file
14
decryptFunc.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
require "enc.php";
|
||||
$words = file_get_contents($_FILES["encDoc"]["tmp_name"]);
|
||||
$data = simplexml_load_string($words) or die("Couldn't make object");
|
||||
|
||||
//Get the XML info in variables (hex2bin the iv and tag)
|
||||
$key = $_POST["key"];
|
||||
$iv = hex2bin($data->iv);
|
||||
$tag = hex2bin($data->tag);
|
||||
$ciphertext = $data->content;
|
||||
|
||||
echo "Your decrypted content:<br>";
|
||||
echo decrypt($ciphertext, $key, $iv, $tag);;
|
||||
?>
|
||||
17
enc.php
Normal file
17
enc.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
function encrypt($plaintext, $key){
|
||||
$cipher = "aes-128-gcm";
|
||||
if (in_array($cipher, openssl_get_cipher_methods())){
|
||||
$ivlen = openssl_cipher_iv_length($cipher);
|
||||
$iv = openssl_random_pseudo_bytes($ivlen);
|
||||
$res = openssl_encrypt($plaintext, $cipher, $key, $options=0, $iv, $tag);
|
||||
return array($res, $iv, $tag);
|
||||
}
|
||||
}
|
||||
function decrypt($ciphertext, $key, $iv, $tag){
|
||||
$cipher = "aes-128-gcm";
|
||||
if (in_array($cipher, openssl_get_cipher_methods())){
|
||||
return openssl_decrypt($ciphertext, $cipher, $key, $options=0, $iv, $tag);
|
||||
}
|
||||
}
|
||||
?>
|
||||
27
encrypt.php
Normal file
27
encrypt.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Encrytion and stuff</title>
|
||||
<meta name=viewport content=width=device-width,initial-scale=1.0>
|
||||
<link rel=stylesheet href=style.css type=text/css>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
function wordCount(thing) {
|
||||
regex = /(\S\s)|(([A-Z]|[a-z])(\.|\!|\?|\z))/;
|
||||
numOfParenthesis = 5; //how many par. sets are in the regex
|
||||
words = (thing.value.split(regex).length-1)/numOfParenthesis;
|
||||
document.getElementById("counter").innerHTML = words;
|
||||
}
|
||||
</script>
|
||||
<form action=submit.php method=POST>
|
||||
<h2 id=counter>0</h2>
|
||||
<textarea onkeyup=wordCount(this) placeholder='Write your words here...' name=words></textarea>
|
||||
<input id=key type=text name=key placeholder='Decryption key' required>
|
||||
<button type=submit name=submit value=submit id=submitWriting>SUBMIT</button>
|
||||
</form>
|
||||
<br>
|
||||
<p class=center><a href=/cs/decrypt.php>Decrypt a file</a></p>
|
||||
</body>
|
||||
</html>
|
||||
14
index.php
Normal file
14
index.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Encrytion and stuff</title>
|
||||
<meta name=viewport content=width=device-width,initial-scale=1.0>
|
||||
<link rel=stylesheet href=style.css type=text/css>
|
||||
</head>
|
||||
<body class=center>
|
||||
<h2><a href=encrypt.php>ENCRYPT</a></h2>
|
||||
<p>or</p>
|
||||
<h2><a href=decrypt.php>DECRYPT</a></h2>
|
||||
</body>
|
||||
</html>
|
||||
56
style.css
Normal file
56
style.css
Normal file
@@ -0,0 +1,56 @@
|
||||
body{
|
||||
background-color: #151515;
|
||||
color: #ccc;
|
||||
font-size: 1.4em;
|
||||
font-family: monospace;
|
||||
}
|
||||
a{
|
||||
color: #ccc;
|
||||
}
|
||||
.center{
|
||||
text-align: center;
|
||||
}
|
||||
#counter{
|
||||
text-align: center;
|
||||
}
|
||||
textarea{
|
||||
width: 70%;
|
||||
background-color: #252525;
|
||||
border: none;
|
||||
padding: 1em;
|
||||
border-radius: 0.4em;
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
font-size: 0.9em;
|
||||
color: inherit;
|
||||
min-height: 50vh;
|
||||
}
|
||||
#key{
|
||||
font-family: inherit;
|
||||
display: block;
|
||||
width: 25%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
background-color: #333;
|
||||
border: none;
|
||||
border-radius: 0.4em;
|
||||
padding: 0.5em;
|
||||
margin-top: 1em;
|
||||
font-size: 0.9em;
|
||||
color: inherit;
|
||||
}
|
||||
button{
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 1em;
|
||||
background-color: #333;
|
||||
color: inherit;
|
||||
border: none;
|
||||
padding: 0.5em 1em;
|
||||
border-radius: 0.4em;
|
||||
}
|
||||
form>*{
|
||||
margin-top: 1em;
|
||||
}
|
||||
9
submit.php
Normal file
9
submit.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
require "enc.php";
|
||||
$enc = encrypt($_POST["words"], $_POST["key"]);
|
||||
$content = "<encrypted>\n"." <iv>".bin2hex($enc[1])."</iv>\n"." <tag>".bin2hex($enc[2])."</tag>\n"." <content>".$enc[0]."</content>\n"."</encrypted>";
|
||||
|
||||
header('Content-type: text/plain');
|
||||
header('Content-Disposition: attachment; filename="encrypted.txt"');
|
||||
echo $content;
|
||||
?>
|
||||
Reference in New Issue
Block a user