· 7 years ago · Apr 04, 2018, 06:52 PM
1'use strict';
2const path = require('path')
3const fs = require('fs')
4const crypto = require('crypto')
5
6
7// 2048 Chars
8const SERVER_SECRET = 'sQt3!prVMSgtH!^sYcd@V?4vDH^DaW=e5$t2P&5@vT7^#SQ_*Zjp9=CPbgXjY&HY@xqgeF3txXsrE=GRp_t76zzN25vm?ZG6c9xM&=@C+Sm-9?B9xjN5!qWv$ghfx$yTRLL9Fm#7_NhtW*Xra9wC9txdDvbzQA&KSNmPb%ZzF$xYxBr@66qJpFaF^@?=xYMZsM?XkTDKuywX4&77R2j9VbQ#ukFsw5DGCAaf7z&=bsu^ejpM8WmhSAFHZ_sXvNkmhv*Y?Zp-sEe6K?^JH9L6Ws7u#w?-Q-Z$2#Zb^6DKpD!rg+&Jt9fAc2Vt&C9Bg=VZTT@^D3CF#Fk$8PBk9LUr?fKbj!gCN6n*8G&pG2Bb4!SN#XSvkk!D%%yXefr5dbG3*ZU6#NqNN*-9gCvBssw9wzfmHyL*n+Zm9#PM6V!FF5#B3fZQh#V#ztm8%NasgcbT_Rj6NKrD%VGNgf^uACRbx26Ec_$97w!&Fa&ncNQ*9xq_wh8ru*8fE^j8tP@mt_^5jXwkDkW+6AH&hvD9_^3gBKaeU@7e5gY6xzJ3Ppw*SAk#&fNzxJrjE$mMmCT8Nd9M8!*wJyU8G?fEK*rw4%BggWH23GZJ__@LSDwk2FcbgE!H*VcwmndwFdDkqN$WZ%gyLC+e!SQT_Ry2-JA-6$BRCj_wuNj@Y8X8fXmzjjVvb6Vjm&-5MFM^yW5MuJzDUC#xyvk%Ly6qVx6AE4Xy8$J2ssuq@YaCX+K@VKXfdhv#A8!jc@A&2U3XLd76+%Kn5DUaXtyMH+KEEg-*+g3C$^KapZdcdrEgmzY8-aq8kvYnmd$rCTu2-Mfzr&ah&suZ75hd54MRd6w-!JhsVGcLThAb_t548Um#9NA=YvpySZ#ZPD88_*ZdcC%7Z8PDBk2HZT5ATu8E?nNbRV*vR+%zSSVV#m%twX-ktn?btmvXLZnm$Knkh5-qR+8YT2e%LnX8bQXMunqF&RrM*K3gDWd%?DYF4-SyHJY3swX9HX7b?L+r*TB2&VScyu$gXjL$hdysUvgTJ%5pgRVeLQWF@kuMn_ZCPJAThZQqsR&NF7$$USG_fd!r6f@rwh5DSCmv77BD4N2+hRexEMd&+5Ade8Zt!Lp*9kqb-3t@anyM?Vv*!5dUp#5xAG=$P_mtaR%7xWrWyLTSbq3vA*sypwsv+k9&AwN?PxbnPQ*ZWqcpKMJ$48RyWbrmZKLHu!Est$v8Lk^ZuH2UYzr9#^EQqZD$$7u@JeHFdRzwb$ZBgKgZy%x5=#*P6%Q9R&bf2Sq_Hs8fCNX=S??5U^X=+bZr6X9dfz!H=qemK%!B*Ed&4*qa*ZaB-j$&psJ%SgUf2x$HLXafzJh_8ceD6Gn+93S4ynDC$+q+=cFNb9szm5Fa=dXh5A!?4&$raQkkW2^G=kZzNmes2E4%XX4@bJ_#6E8F-NTs6%8GU=6w!D6^Tv#z%A_eafz&sVLMWZD#paFMNQj?-8mFZQ8-wezVeqf3gLZg+mF7x6EpkznuXZ^?38MU=Xr3xqm?QK%zz36gnVnNs4L$B65j5#dXh2&*S@x%^qg2?CJ_4Vs?2Q8fwkFEyTAUwT%AvS&ytzC5ArES@nVSf=m?x49fL2-cD8QxEupM$AQvf*g33r&k3ke&GR3WtTY+HT3*MFHE##UdqR@nG+v5Vc+?W-WRkNad#--f#TkfKV!7DBp_qnu%=cu#hCkmGE?3r*J88NL@J++M6Xke9t*g?QLy$vaxpyx3vQmJBT83fn=MQhLy4mf_%w6M_PUUEJEhv=wDz%*nnTcmgchU+rrj_Upn$&wQe?uqPghg!qJtV*@SKaFj8MZA4PwZf3QB9Gk+ttn!JpYUkJG&h$B&$z4Hz+ySXvdFRU=j=PjpKUa3jN6C8YX$WhK4zfS?a3zyEq6pJ%vRtLJqV2&va@uPMshy-Bx&F+VTke=H@MK_*kSRB9S2D-8uVdXWR-8xX!fr=EwEvAfN^C#_TsGZyDT*uftbqFP2WdW6Mr9C@rmvK2gZB+ewm@8CwQPBKJRh!6sWHt+h6U^LT=m%w6w6Sku94KATwLWc+%Bkq5TKca6F'
9
10
11
12var meinJSObjekt = {
13 user: 123,
14 passwort: "12312312"
15}
16//JSON aus dem Objekt generieren
17let $dataPrivateIn = JSON.stringify(meinJSObjekt, null, '\t')
18
19var secretKey = crypto.createHash('sha256').update($dataPrivateIn).digest('hex').toString('binary')
20
21let secretKeyCipher = crypto.createCipher('aes-256-cbc', SERVER_SECRET)
22secretKeyCipher = secretKeyCipher.update(secretKey, 'utf8', 'hex') + secretKeyCipher.final('hex')
23
24
25//* Encrypt
26let cipher = crypto.createCipher('aes-256-cbc', secretKey)
27let dataPublic = cipher.update($dataPrivateIn, 'utf8', 'binary') + cipher.final('binary')
28let dataPublicOut = secretKeyCipher + ':' + dataPublic
29
30
31//* Decrypt
32let dataPublicIn = dataPublicOut
33var secretKey = dataPublicIn.substring(0, dataPublicIn.indexOf(':'))
34
35let secretKeyDecipher = crypto.createDecipher('aes-256-cbc', SERVER_SECRET)
36secretKeyDecipher = secretKeyDecipher.update(secretKey, 'hex', 'utf8') + secretKeyDecipher.final('utf8')
37
38
39let decipher = crypto.createDecipher('aes-256-cbc', secretKeyDecipher)
40let dataPrivateIn = dataPublicIn.substring(dataPublicIn.indexOf(':') + 1) //JSON.parse(dataPublic)
41let dataPrivateOut = decipher.update(dataPrivateIn, 'binary', 'utf8') + decipher.final('utf8')
42//dataPrivateOut = JSON.parse(dataPrivateOut)
43
44
45fs.writeFileSync('public.json', dataPublicOut)
46fs.writeFileSync('private.json', dataPrivateOut)