<!doctype html><html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-8609448-1', 'auto');
ga('send', 'pageview');
</script>
<script>
(function() {
var useSSL = 'https:' == document.location.protocol;
var src = (useSSL ? 'https:' : 'http:') +
'//www.googletagservices.com/tag/js/gpt.js';
document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
})();
</script>
<script>if (googletag) {var mapping0 = googletag.sizeMapping().addSize([1500,200], [970,90]).addSize([768,200], [728,90]).addSize([480,200], [468,60]).addSize([0,0], [320,100]).build();googletag.defineSlot('/13440450/v7.en.A.B.top', [[970,90],[728,90],[468,60],[320,100]], 'div-gpt-ad-1521620115-1').defineSizeMapping(mapping0).setCollapseEmptyDiv(true).addService(googletag.pubads());
var mapping1 = googletag.sizeMapping().addSize([768,200], [728,90]).addSize([480,200], [468,60]).addSize([0,0], [320,250]).build();googletag.defineSlot('/13440450/v7.en.A.B.bottom', [[728,90],[468,60],[320,250]], 'div-gpt-ad-1521620115-2').defineSizeMapping(mapping1).setCollapseEmptyDiv(true).addService(googletag.pubads());
var mapping2 = googletag.sizeMapping().addSize([0,0], [320,250]).build();googletag.defineSlot('/13440450/v7.en.A.B.right', [[320,250]], 'div-gpt-ad-1521620115-3').defineSizeMapping(mapping2).setCollapseEmptyDiv(true).addService(googletag.pubads());
var mapping3 = googletag.sizeMapping().addSize([768,400], [320,250]).build();googletag.defineSlot('/13440450/v7.en.A.B.sticker', [[320,250]], 'div-gpt-ad-1521620115-4').defineSizeMapping(mapping3).setCollapseEmptyDiv(true).addService(googletag.pubads());
googletag.pubads().enableSyncRendering();
googletag.pubads().enableSingleRequest();
googletag.enableServices();
}</script>
<link rel="stylesheet" href="/style/min/planetcalc_common_2804.css">
<script src="/lib/min/planetcalc_common_2804.js"></script>
<script src="/lib/require.js"></script><script>define('jquery', [], function() { return jQuery; });requirejs.config({ paths: { 'jstat': '//cdn.jsdelivr.net/jstat/1.4.7/jstat.min','d3': '//d3js.org/d3.v4.min'
,'mathjax':'/plugins/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML&locale=en','maskedinput':'/plugins/jquery.maskedinput.min'
,'math':'https://cdnjs.cloudflare.com/ajax/libs/mathjs/3.20.2/math.min'
},
shim: {jstat: { exports: ['j$', 'jStat'],init: function () { return { j$: j$,jStat: jStat };}}
,mathjax: { exports: 'MathJax' }
}});
</script>
<meta name="keywords" content="text, cryptography, encryption, Computers, Vigenère cipher, Vigenere, decryption, #cipher, #cypher"/><meta name="description" content="Online calculator. Calculator encrypts entered text by using Vigenère cipher. Non-alphabetic symbols (digits, whitespaces, etc.) are not transformed."/><meta name="author" content="Timur : planetcalc member"/><meta name="generator" content="Planetcalc"/><style media="all">
@media (min-width: 840px) {
.main-column { padding-left: 8%; }
}
@media (min-width: 480px) and (max-width: 839px) {
.main-column { padding-left:32px; }
}
td.comment_created {
border-bottom: 0 !important;
padding-bottom: 0 !important;
}
td.message {
padding-top:0 !important;
}
#main_div { padding:0 }
.mdc-typography--subheading1 {
margin-top:0;
}
#delete_comment_menu {
position:absolute;
}
#request_status { width:900px; }
.modal-body { max-height: 800px;}
.sofia {
margin:8px auto;
text-align:center;
}
.right-ads { margin:16px 0; }
.mdc-card__media {
background-color:#fafafa;
}
#top-right-card section.mdc-card__primary {
position:relative;
text-align:center;
}
.bs-callout {
padding: 20px;
margin: 20px 0;
border: 1px solid #607e8d;
border-left-width: 5px;
border-radius: 3px;
}
.bs-callout-info {
border-left-color: #263238;
}
.bs-callout ul {
list-style:none;
}
.author-date i {
margin:0 8px;
}
.comments_form .mdc-text-field--textarea {
width:100%;
}
.comments_form button {
float:right;
}
.similar_items1 ul, .total-message {
padding-left:24px;
}
#comments {
margin-top:32px;
}
#comments .pc-switch {
margin-top:0;
}
.ads-inline {
text-align: center;
}
</style>
<script>
var save_page_form = null;
function SavePageCalculators() {
var rst = new Recordset();
for( var i=0;i<window.CurrentPageCalculators.length;++i ) {
var calc = window.CurrentPageCalculators[i];
var rec = rst.AddNewRecord();
rec["calculatorID"] = calc.CalculatorID;
rec["data"] = Value2Json(calc.GetInputValues());
}
if ( !save_page_form ) {
save_page_form = $('<form method="post" action="/personal/save/?id=0" id="save_calcs" style="display:none"><fieldset><input type="hidden" id="saved_data" name="saved_data" value=""/></fieldset></form>').appendTo('body');
}
save_page_form.find("saved_data").val( rst.SaveToJson() );
save_page_form.submit();
}
</script>
<title>Online calculator: Vigenère cipher</title>
</head>
<body id="ui_viewer" class="mdc-typography viewer">
<aside id="menudrawer" class="mdc-temporary-drawer"><nav class="mdc-temporary-drawer__drawer"><h2 class="pc-brand">PLANETCALC</h2><nav class="mdc-temporary-drawer__content mdc-list"><a href="/all/" class="mdc-list-item"><i class="mdc-list-item__start-detail material-icons">apps</i> All online calculators</a><a href="#" onclick="dialoghandlerv5ab214936fba5.Dialog.Show();;return BSPreventDefaultAction( event );" class="mdc-list-item"><i class="mdc-list-item__start-detail material-icons">code</i> Get reference code</a><a href="/personal/?add_a=2468" class="mdc-list-item"><i class="mdc-list-item__start-detail material-icons">favorite</i> Save to My Calculators.</a><a href="/personal/requestcalc/" class="mdc-list-item"><i class="mdc-list-item__start-detail material-icons">lightbulb_outline</i> Request a calculator</a></nav></nav></aside><div class="pc-tb pc-tb-fixed mdc-theme--dark"><div class="mdc-toolbar__row"><div class="mdc-toolbar__section mdc-toolbar__section--align-start mdc-toolbar__section--shrink-to-fit" ><a class="material-icons mdc-toolbar__icon mdc-toolbar__icon--menu" href="#">menu</a><a href="/" class="pc-brand-noimg" title="Online calculators"><h2 class="pc-title">PLANETCALC <span class="hidden-xs pc-title-desc">Online calculators</span></h2></a></div><div class="mdc-toolbar__section mdc-toolbar__section--align-end" ><a id="btn_change_language" class="hidden-xs material-icons mdc-toolbar__icon" href="#">language</a><a class="material-icons mdc-toolbar__icon" href="/search/">search</a><a href="/personal/" class="hidden-xs pc-btn-toolbar mdc-button mdc-button--raised" id="planetcalc_login">Login</a></div></div><div style="min-height:0;"><div id="select_language_menu" class="mdc-simple-menu mdc-simple-menu--open-from-" tabindex="0"><ul class="mdc-simple-menu__items mdc-list pc-menu-image" role="menu" aria-hidden="true"><li id="select_language_en" class="mdc-list-item" role="menuitem" tabindex="0" onclick="; return BSPreventDefaultAction(event);"><i class="material-icons">check</i><span>English</span></li><li id="select_language_es" class="mdc-list-item" role="menuitem" tabindex="0" onclick="document.location.href='https://es.planetcalc.com/2468/?language_select=es';"><span>Español</span></li><li id="select_language_fr" class="mdc-list-item" role="menuitem" tabindex="0" onclick="document.location.href='https://fr.planetcalc.com/2468/?language_select=fr';"><span>Français</span></li><li id="select_language_ru" class="mdc-list-item" role="menuitem" tabindex="0" onclick="document.location.href='https://planetcalc.ru/2468/?language_select=ru';"><span>Русский</span></li></ul></div></div></div><script>
$(function() {
var language_menu = null;
$('#btn_change_language').click( function() {
if ( !language_menu ) {
language_menu = PLANETCALC.menu(document.getElementById('select_language_menu'));
}
language_menu.root_.style.left = null;
language_menu.root_.style.left = null;
language_menu.root_.style.top = "0px";
language_menu.root_.style.right = "0px";
language_menu.root_.style['transform-origin'] = "right top 0px";
language_menu.show();
return false;
});
});
</script>
<div id="main_div" class="pc-tb-fixed-adjust">
<script>if ( PCL===undefined ) {var PCL = {};}
PCL.err_empty_field="Field is empty";PCL.err_invalid_email="'%1' is not a valid email address.";PCL.err_must_be_not_empty="Field must not be empty.";PCL.err_must_be_at_least_x_chars_long="Field entry must be at least %1 characters long.";PCL.err_must_be_less_or_equal_x_chars="Field entry must be fewer than %1 characters long.";PCL.err_must_be_the_same_as="Field entry must be the same as the field '%1' value.";PCL.err_invalid_symbol="Invalid symbol entered. Allowed symbols:'%1'.";PCL.err_invalid_number="Number expected.";PCL.err_invalid_positive_number="Positive number expected.";PCL.err_invalid_integer_number="Integer expected.";PCL.err_invalid_integer_positive_number="Positive integer expected.";PCL.err_range_error="Values must be in the range [%1 .. %2].";PCL.err_duplicate_symbols="Symbol %1 is already entered in allowed character set.";PCL.err_must_be_less_than="Field value must be less than %1.";PCL.err_first_char_must_be_alpha="First character must be a Latin letter.";PCL.dow_0="Sun";PCL.dow_1="Mon";PCL.dow_2="Tue";PCL.dow_3="Wed";PCL.dow_4="Thu";PCL.dow_5="Fri";PCL.dow_6="Sat";PCL.mon_0="January";PCL.mon_1="February";PCL.mon_2="March";PCL.mon_3="April";PCL.mon_4="May";PCL.mon_5="June";PCL.mon_6="July";PCL.mon_7="August";PCL.mon_8="September";PCL.mon_9="October";PCL.mon_10="November";PCL.mon_11="December";PCL.smon_0="Jan";PCL.smon_1="Feb";PCL.smon_2="Mar";PCL.smon_3="Apr";PCL.smon_4="May";PCL.smon_5="Jun";PCL.smon_6="Jul";PCL.smon_7="Aug";PCL.smon_8="Sep";PCL.smon_9="Oct";PCL.smon_10="Nov";PCL.smon_11="Dec";PCL.century="century";PCL.b_c="B.C.";PCL.ordinal_one="%1st";PCL.ordinal_two="%1nd";PCL.ordinal_few="%1rd";PCL.ordinal_other="%1th";PCL.err_import_error="Error occurred while importing data on line:%1.\nInvalid value: '%2'.\nError:\n%3";PCL.err_import_cannot_find_separator="\"Could not determine a data field separator. You may use one of the following characters to separate data fields: tab, ';' or ','.\"";PCL.date_format="%2/%3/%1%4";PCL.date_time_format="%2/%3/%1%4 %6:%7";PCL.latitudeN="N";PCL.latitudeS="S";PCL.longitudeE="E";PCL.longitudeW="W";PCL.yes="yes";PCL.no="no";PCL.err_invalid_upload_extension="Invalid file format. We support only the following formats: %1";PCL.err_contact="Please leave your email or phone number.";PCL.x_of_y="%1 of %2";PCL.items_per_page="Items per page";PCL.next_page="Next page";PCL.prev_page="Previous page";PCL.digits_afterdot="Digits after the decimal point: %1";PCL.items_selected="Items selected: %1";PCL.err_value_out_of_set="Must be one of the following: %1";PCL.Nth_century="%1 century";PCL.userdata="The caclulation has been saved %2 by <a href=\"/personal/authorinfo/?id=%3\" rel=\"nofollow\">%1</a>";PCL.err_invalid_array="The numbers must be space separated.";PCL.parser_error_1="Unexpected character %token% (%decorated%). Expected: %expected%.";PCL.parser_error_2="Unexpected symbol %token% (%decorated%). Expected: %expected%.";PCL.parser_error_3="Expression is incomplete. Expected: %expected%.";PCL.array_error="Error array in element #%1.";PCL.err_complex_not_allowed="Complex number is not allowed.";PCL.err_fraction_not_allowed="Fraction is not allowed."; PCL.getOrdinal = function(n) {if ( (n%10)==1 && (n%100)!=11 ) return PCL.ordinal_one;
if ( (n%10)==2 && (n%100)!=12 ) return PCL.ordinal_two;
if ( (n%10)==3 && (n%100)!=13 ) return PCL.ordinal_few;return PCL.ordinal_other;
}</script>
<script>if ( PCL===undefined ) {var PCL = {};}
PCL.minute_m0="minutes";PCL.minute_0="minutes";PCL.minute_1="minute";PCL.minute_2="minutes";PCL.minute_3="minutes";PCL.minute_4="minutes";PCL.minute_5="minutes";PCL.minute_6="minutes";PCL.minute_7="minutes";PCL.minute_8="minutes";PCL.minute_9="minutes";PCL.minute_10="minutes";PCL.minute_1X="minutes";PCL.hour_1="hour";PCL.hour_2="hours";PCL.hour_3="hours";PCL.hour_4="hours";PCL.hour_5="hours";PCL.hour_6="hours";PCL.hour_7="hours";PCL.hour_8="hours";PCL.hour_9="hours";PCL.hour_10="hours";PCL.hour_1X="hours";PCL.day_0="days";PCL.day_1="day";PCL.day_2="days";PCL.day_3="days";PCL.day_4="days";PCL.day_5="days";PCL.day_6="days";PCL.day_7="days";PCL.day_8="days";PCL.day_9="days";PCL.day_10="days";PCL.day_1X="days";PCL.month_1="month";PCL.month_2="months";PCL.month_3="months";PCL.month_4="months";PCL.month_5="months";PCL.month_6="months";PCL.month_7="months";PCL.month_8="months";PCL.month_9="months";PCL.month_10="months";PCL.month_1X="months";PCL.year_1="year";PCL.year_2="years";PCL.year_3="years";PCL.year_4="years";PCL.year_5="years";PCL.year_6="years";PCL.year_7="years";PCL.year_8="years";PCL.year_9="years";PCL.year_10="years";PCL.year_1X="years";PCL.ago="ago";PCL.N_minute_m0_ago="%1 minutes ago";PCL.N_minute_0_ago="%1 minutes ago";PCL.N_minute_1_ago="%1 minute ago";PCL.N_minute_2_ago="%1 minutes ago";PCL.N_minute_3_ago="%1 minutes ago";PCL.N_minute_4_ago="%1 minutes ago";PCL.N_minute_5_ago="%1 minutes ago";PCL.N_minute_6_ago="%1 minutes ago";PCL.N_minute_7_ago="%1 minutes ago";PCL.N_minute_8_ago="%1 minutes ago";PCL.N_minute_9_ago="%1 minutes ago";PCL.N_minute_10_ago="%1 minutes ago";PCL.N_minute_1X_ago="%1 minutes ago";PCL.N_hour_1_ago="%1 hour ago";PCL.N_hour_2_ago="%1 hours ago";PCL.N_hour_3_ago="%1 hours ago";PCL.N_hour_4_ago="%1 hours ago";PCL.N_hour_5_ago="%1 hours ago";PCL.N_hour_6_ago="%1 hours ago";PCL.N_hour_7_ago="%1 hours ago";PCL.N_hour_8_ago="%1 hours ago";PCL.N_hour_9_ago="%1 hours ago";PCL.N_hour_10_ago="%1 hours ago";PCL.N_hour_1X_ago="%1 hours ago";PCL.N_day_0_ago="%1 days ago";PCL.N_day_1_ago="%1 day ago";PCL.N_day_2_ago="%1 days ago";PCL.N_day_3_ago="%1 days ago";PCL.N_day_4_ago="%1 days ago";PCL.N_day_5_ago="%1 days ago";PCL.N_day_6_ago="%1 days ago";PCL.N_day_7_ago="%1 days ago";PCL.N_day_8_ago="%1 days ago";PCL.N_day_9_ago="%1 days ago";PCL.N_day_10_ago="%1 days ago";PCL.N_day_1X_ago="%1 days ago";PCL.N_month_1_ago="%1 month ago";PCL.N_month_2_ago="%1 months ago";PCL.N_month_3_ago="%1 months ago";PCL.N_month_4_ago="%1 months ago";PCL.N_month_5_ago="%1 months ago";PCL.N_month_6_ago="%1 months ago";PCL.N_month_7_ago="%1 months ago";PCL.N_month_8_ago="%1 months ago";PCL.N_month_9_ago="%1 months ago";PCL.N_month_10_ago="%1 months ago";PCL.N_month_1X_ago="%1 months ago";PCL.N_year_1_ago="%1 year ago";PCL.N_year_2_ago="%1 years ago";PCL.N_year_3_ago="%1 years ago";PCL.N_year_4_ago="%1 years ago";PCL.N_year_5_ago="%1 years ago";PCL.N_year_6_ago="%1 years ago";PCL.N_year_7_ago="%1 years ago";PCL.N_year_8_ago="%1 years ago";PCL.N_year_9_ago="%1 years ago";PCL.N_year_10_ago="%1 years ago";PCL.N_year_1X_ago="%1 years ago";</script>
<script>var currentBookmark = {"language":"en","title":"Vigenère cipher","url":"https://planetcalc.com/2468/","urlParams":function () { return window.CurrentPageCalculators ? SaveObjectToURLParams(window.CurrentPageCalculators[0].GetInputValues()) : ''; },"tags":["text","cryptography","encryption","Computers","Vigenère cipher","Vigenere","decryption","#cipher","#cypher"],"id":2468}</script><script>
function DialogReferencev5ab214936fba5() {var me = this; this.ctrl = null; function getControl() { if ( !me.ctrl ) me.ctrl = PLANETCALC.dialog(me.GetElement()); return me.ctrl;};this.GetElement = function () { return document.getElementById( "dialogv5ab214936fba5" ); };this.GetEventHandlerName = function () { return "dialoghandlerv5ab214936fba5"; };this.Show = function () { getControl().show(); };this.Hide = function () { getControl().close(); };this.Busy = function () { SetDialogBusy("dialogv5ab214936fba5"); };this.Free = function () { SetDialogFree("dialogv5ab214936fba5"); };this.SetValues = function ( values ) {for( var inputId in values ) {if ( this[inputId] ) { this[inputId].SetValue( values[inputId] ); }}};
this.urlbase= new DialogInput("urlbase", this, null,new ElementAccessorDefault());
this.title= new DialogInput("title", this, null,new ElementAccessorDefault());
this.description= new DialogInput("description", this, null,new ElementAccessorDefault());
this.picture= new DialogInput("picture", this, null,new ElementAccessorDefault());
this.artefact= new DialogInput("artefact", this, null,new ElementAccessorDefault());
this.code= new DialogInput("code", this, null,new ElementAccessorDefault());
this.feelAndLook= new DialogInput("feelAndLook", this, null,new ElementAccessorDefault());
this.with_description= new DialogInput("with_description", this, null,new ElementAccessorCheckbox());
this.with_params= new DialogInput("with_params", this, null,new ElementAccessorCheckbox());
this.sample= new DialogInput("sample", this, null,new ElementAccessorDefault());
this.cancel= new DialogInput("cancel", this, null,new ElementAccessorDefault());this.Clear = function ( ) {this.urlbase.ResetValue();this.title.ResetValue();this.description.ResetValue();this.picture.ResetValue();this.artefact.ResetValue();this.code.ResetValue();this.with_description.ResetValue();this.with_params.ResetValue();this.sample.ResetValue();this.cancel.ResetValue();};this.SetDefaultValues = function () {this.urlbase.SetValue("\/\/planetcalc.com");this.title.SetValue("Online calculator: Vigen\u00e8re cipher");this.description.SetValue("Calculator encrypts entered text by using Vigen\u00e8re cipher. Non-alphabetic symbols (digits, whitespaces, etc.) are not transformed.");this.picture.SetValue("\/img\/calculator.gif");this.artefact.SetValue(2468);this.code.SetValue(null);this.with_description.SetValue(true);this.with_params.SetValue(null);this.sample.SetValue("Sample");this.cancel.SetValue(null);};this.GetValues = function () {var retval = {};retval["urlbase"]=this.urlbase.GetValue();retval["title"]=this.title.GetValue();retval["description"]=this.description.GetValue();retval["picture"]=this.picture.GetValue();retval["artefact"]=this.artefact.GetValue();retval["code"]=this.code.GetValue();retval["with_description"]=this.with_description.GetValue();retval["with_params"]=this.with_params.GetValue();retval["sample"]=this.sample.GetValue();retval["cancel"]=this.cancel.GetValue();return retval;};this.ShowError = function ( obj, text ) {showError( obj, text, "error_box_v5ab214936fba5");};this.Validate = function ( ) {if (!this.urlbase.ValidateCurrent() ) { return false; }if (!this.title.ValidateCurrent() ) { return false; }if (!this.description.ValidateCurrent() ) { return false; }if (!this.picture.ValidateCurrent() ) { return false; }if (!this.artefact.ValidateCurrent() ) { return false; }if (!this.code.ValidateCurrent() ) { return false; }if (!this.with_description.ValidateCurrent() ) { return false; }if (!this.with_params.ValidateCurrent() ) { return false; }if (!this.sample.ValidateCurrent() ) { return false; }if (!this.cancel.ValidateCurrent() ) { return false; }return true;};};
</script><aside class="mdc-dialog pc-dialog" id="dialogv5ab214936fba5"><div class="mdc-dialog__surface"><header class="mdc-dialog__header"><h2 class="mdc-dialog__header__title" id="dialogv5ab214936fba5__title">Get reference code</h2></header><div class="mdc-dialog__body mdc-dialog__body--scrollable"><div class="pc-grid-inner"><div class="pc-cell-md"><div id="ctrl_dialogv5ab214936fba5_code" class="pc-text mdc-text-field mdc-text-field--textarea"><textarea class="mdc-text-field__input" id="dialogv5ab214936fba5_code" disabled="disabled" aria-controls="hlp_dialogv5ab214936fba5_code" onchange=" dialoghandlerv5ab214936fba5.onchanged('code');" onkeypress="return dialoghandlerv5ab214936fba5.onkeypressed('code', event );" rows="4" cols="60" ></textarea>
<label class="mdc-text-field__label" for="dialogv5ab214936fba5_code">Code</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5ab214936fba5_code" class="pc-field-msg"></p></div><div class="pc-cell-md"><div class="pc-grid-inner pc-dialog-group" id="dialogv5ab214936fba5_feelAndLook"><div class="pc-cell-lg"><div class="pc-switch"><div class="mdc-switch"><input class="mdc-switch__native-control" type="checkbox" checked="checked" id="dialogv5ab214936fba5_with_description" aria-controls="hlp_dialogv5ab214936fba5_with_description" onchange=" dialoghandlerv5ab214936fba5.onchanged('with_description');"/><div class="mdc-switch__background"><div class="mdc-switch__knob"></div></div></div><label for="dialogv5ab214936fba5_with_description"> With description</label></div><p id="hlp_dialogv5ab214936fba5_with_description" class="pc-field-msg"></p></div><div class="pc-cell-lg"><div class="pc-switch"><div class="mdc-switch"><input class="mdc-switch__native-control" type="checkbox" id="dialogv5ab214936fba5_with_params" aria-controls="hlp_dialogv5ab214936fba5_with_params" onchange=" dialoghandlerv5ab214936fba5.onchanged('with_params');"/><div class="mdc-switch__background"><div class="mdc-switch__knob"></div></div></div><label for="dialogv5ab214936fba5_with_params"> Include current parameters.</label></div><p id="hlp_dialogv5ab214936fba5_with_params" class="pc-field-msg"></p></div></div></div><div class="pc-cell-lg"><div id="dialogv5ab214936fba5_sample" class="labelctrl">Sample</div></div><input type="hidden" value="//planetcalc.com" id="dialogv5ab214936fba5_urlbase"/><input type="hidden" value="Online calculator: Vigenère cipher" id="dialogv5ab214936fba5_title"/><input type="hidden" value="Calculator encrypts entered text by using Vigenère cipher. Non-alphabetic symbols (digits, whitespaces, etc.) are not transformed." id="dialogv5ab214936fba5_description"/><input type="hidden" value="/img/calculator.gif" id="dialogv5ab214936fba5_picture"/><input type="hidden" value="2468" id="dialogv5ab214936fba5_artefact"/></div></div><footer class="mdc-dialog__footer"><button class="mdc-button" type="button" id="dialogv5ab214936fba5_cancel">Close</button>
<script>function onclick_v5ab214936fba5cancel( evt ) {dialoghandlerv5ab214936fba5.oncommand('cancel'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5ab214936fba5_cancel'), 'click', onclick_v5ab214936fba5cancel, 'form');</script></footer></div><div class="mdc-dialog__backdrop"></div></aside><div><script>
var dialogv5ab214936fba5 = new DialogReferencev5ab214936fba5();
var dialoghandlerv5ab214936fba5 = new function(){
this.Dialog=null;
this.onchanged = function () { this.Render(); };
this.onkeypressed = this.onchanged;
this.initdialog = function (dialog) {
this.Dialog = dialog; this.Render();
};
this.Render = function() {
var img = '';
var dlg = this.Dialog;
var title = dlg.title.GetValue();
var url = dlg.urlbase.GetValue();
var urlParams = '';
if ( dlg.with_params.GetValue() ) {
for( var i=0;i<window.CurrentPageCalculators.length;++i ) {
var calc = window.CurrentPageCalculators[i];
var calcInputs = calc.GetInputValues();
urlParams += ((urlParams=='')?'?':'&') + SaveObjectToURLParams(calcInputs);
}
}
var href = '<a href="' + url + '/' + dlg.artefact.GetValue() + '/' + urlParams + '" style="text-decoration: none;" title="' + title +'">' + img + title + '</a>';
if ( dlg.with_description && dlg.with_description.GetValue() ) {
href += ' <div style="font-size:80%">' + dlg.description.GetValue() + '</div>';
}
dlg.code.SetValue( href );
dlg.sample.SetValue( href );
}
this.oncommand = function ( ) {
this.Dialog.Hide();
};
};
dialoghandlerv5ab214936fba5.initdialog(dialogv5ab214936fba5);
</script></div>
<div class="mdc-layout-grid">
<div class="mdc-layout-grid__inner">
<div class="main-column mdc-layout-grid__cell mdc-layout-grid__cell--span-9" id="left-block"><div class="pc-icon-align"><a class="material-icons" href="/">home</a><i class="material-icons">chevron_right</i><a href="/search/?tag=1459">Professional</a><i class="material-icons">chevron_right</i><a href="/search/?tag=1462">Computers</a></div><header><h1 class="mdc-typography--display1">Vigenère cipher</h1><p class="desc mdc-theme--text-hint-on-background mdc-typography--subheading1">Calculator encrypts entered text by using Vigenère cipher. Non-alphabetic symbols (digits, whitespaces, etc.) are not transformed.</p><div><div class="pc-icon-align author-date mdc-theme--text-hint-on-background"><i class="material-icons">person_outline</i><a href="/2468/?thanks=1">Timur</a><i class="material-icons">schedule</i><span class="nav-created">2013-05-27 12:19:10</span></div></div></header><script>
var timeSpanFormatter = new FormatterTimeSpan();
$(document).ready(function() {
var dVal = $('span.nav-created').text();
$('span.nav-created').text(timeSpanFormatter.Format( dVal));
});
</script>
<div class="article"><div class="article_body"><p>Since we already have <a href="/1434/">Caesar cipher</a>, it seems logical to add Vigenère cipher as well. Here is the calculator, which transforms entered text (encrypt or decrypt) using Vigenere cipher. </p>
<p>The algorithm is quite simple. Vigenère cipher is the sequence of Caesar ciphers with different transformations (ROTX, see <a href="/1434/">Caesar cipher</a>). For example, first letter of text is transformed using ROT5, second - using ROT17, et cetera. The sequence is defined by keyword, where each letter defines needed shift. Phrase LEMON, for example, defines the sequence of ROT11-ROT4-ROT12-ROT14-ROT13, which is repeated until all block of text is encrypted.</p>
<p>As <a href="http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher" rel="nofollow">wikipedia</a> tells us, it is a simple form of polyalphabetic substitution. The idea behind the Vigenère cipher, like all polyalphabetic ciphers, is to disguise plaintext letter frequencies, which interferes with a straightforward application of frequency analysis. For instance, if P is the most frequent letter in a ciphertext whose plaintext is in English, one might suspect that P corresponds to E, because E is the most frequently used letter in English. However, using the Vigenère cipher, E can be enciphered as different ciphertext letters at different points in the message, thus defeating simple frequency analysis.<br />
The primary weakness of the Vigenère cipher is the repeating nature of its key. If a cryptanalyst correctly guesses the key's length, then the cipher text can be treated as interwoven Caesar ciphers, which individually are easily broken.</p>
<p>The running key variant of the Vigenère cipher was also considered unbreakable at one time. This version uses as the key a block of text as long as the plaintext. The problem with the running key Vigenère cipher is that the cryptanalyst has statistical information about the key (assuming that the block of text is in a known language) and that information will be reflected in the ciphertext.<br />
If using a key which is truly random, is at least as long as the encrypted message and is used only once, the Vigenère cipher is theoretically unbreakable. However, in this case it is the key, not the cipher, which provides cryptographic strength and such systems are properly referred to collectively as one-time pad systems, irrespective of which ciphers are employed.</p>
<p></p>
<div class="ads-inline"><div id="div-gpt-ad-1521620115-1"><script>googletag.display("div-gpt-ad-1521620115-1");</script></div></div><a id="calculator2463"></a><div class="pc-embed" data-calcid="2463"><script>
function Dialogv5aad062181303() {this.GetElement = function () { return document.getElementById( "dialogv5aad062181303" ); };this.GetEventHandlerName = function () { return "dialoghandlerv5aad062181303"; };this.Show = function () { ShowDialog("dialogv5aad062181303"); };this.Hide = function () { HideDialog("dialogv5aad062181303"); };this.Busy = function () { SetDialogBusy("dialogv5aad062181303"); };this.Free = function () { SetDialogFree("dialogv5aad062181303"); };this.SetValues = function ( values ) {for( var inputId in values ) {if ( this[inputId] ) { this[inputId].SetValue( values[inputId] ); }}};
this.aselector= new DialogInput("aselector", this, null,new ElementAccessorSelect());
this.method= new DialogInput("method", this, null,new ElementAccessorRadio());
this.text= new DialogInput("text", this, null,new ElementAccessorDefault());
this.key= new DialogInput("key", this, null,new ElementAccessorDefault());
this.transform= new DialogInput("transform", this, null,new ElementAccessorRadio());
this.res= new DialogInput("res", this, null,new ElementAccessorResource());
this._line= new DialogInput("_line", this, null,new ElementAccessorDefault());
this._progress_= new DialogInput("_progress_", this, null,new ElementAccessorDefault());
this.transformed= new DialogInput("transformed", this, null,new ElementAccessorOutput());this.Clear = function ( ) {this.aselector.ResetValue();this.method.ResetValue();this.text.ResetValue();this.key.ResetValue();this.transform.ResetValue();this._line.ResetValue();this._progress_.ResetValue();this.transformed.ResetValue();};this.SetDefaultValues = function () {this.aselector.SetValue("english");this.method.SetValue("ROT0");this.text.SetValue("ATTACK AT DAWN");this.key.SetValue("LEMON");this.transform.SetValue("c");this._line.SetValue("\u003Cdiv class=\u0022pc-actions\u0022\u003E\u003Cbutton type=\u0022button\u0022 id=\u0022dialogv5aad062181303_calculate\u0022 onclick=\u0022dialoghandlerv5aad062181303.recalculate(500); return BSPreventDefaultAction(event);\u0022 class=\u0022mdc-button mdc-button--raised mdc-theme--secondary-bg pc-btn-calc\u0022\u003E\u003Cspan id=\u0022dialogv5aad062181303_button_text\u0022\u003ECalculate\u003C\/span\u003E\u003C\/button\u003E\u003C\/div\u003E");this._progress_.SetValue(null);this.transformed.SetValue(null);};this.GetValues = function () {var retval = {};retval["aselector"]=this.aselector.GetValue();retval["method"]=this.method.GetValue();retval["text"]=this.text.GetValue();retval["key"]=this.key.GetValue();retval["transform"]=this.transform.GetValue();retval["_line"]=this._line.GetValue();retval["_progress_"]=this._progress_.GetValue();retval["transformed"]=this.transformed.GetValue();return retval;};this.ShowError = function ( obj, text ) {showError( obj, text, "error_box_v5aad062181303");};this.Validate = function ( ) {if (!this.aselector.ValidateCurrent() ) { return false; }if (!this.method.ValidateCurrent() ) { return false; }if (!this.text.ValidateCurrent() ) { return false; }if (!this.key.ValidateCurrent() ) { return false; }if (!this.transform.ValidateCurrent() ) { return false; }if (!this._line.ValidateCurrent() ) { return false; }if (!this._progress_.ValidateCurrent() ) { return false; }if (!this.transformed.ValidateCurrent() ) { return false; }return true;};};
</script><div class="pc-grid-inner pc-dialog-group" id="dialogv5aad062181303"><div class="pc-cell-lg"><div class="pc-group-header"><a class="mdc-typography--headline" href="https://planetcalc.com/2463/?license=1"><img src="/img/logo_calc.png" alt="Created on PLANETCALC"></a><h3 class="pc-group-title">Vigenère cipher</h3></div></div><div class="pc-cell-sm"><div class="pc-control"><label class="pc-label" for="dialogv5aad062181303_aselector">Alphabet</label><select class="mdc-select pc-select" id="dialogv5aad062181303_aselector" name="aselector" aria-controls="hlp_dialogv5aad062181303_aselector" onchange=" dialoghandlerv5aad062181303.onchanged('aselector');"><option selected="selected" value="english">English</option>
<option value="russian">Russian</option>
<option value="russiannoYO">Russian (without ё)</option>
<option value="spanish">Spanish</option>
</select></div><p id="hlp_dialogv5aad062181303_aselector" class="pc-field-msg"></p></div><div class="mdc-layout-grid__cell mdc-layout-grid__cell--span-8"><div class="pc-control" id="dialogv5aad062181303_method" aria-controls="hlp_dialogv5aad062181303_method"><label class="pc-label">Tabula recta starts with</label><div class="pc-radio-inputs"><div class="mdc-form-field"><div class="mdc-radio"><input type="radio" class="mdc-radio__native-control" id="dialogv5aad062181303_method0" name="method" onclick="dialoghandlerv5aad062181303.onchanged('method');" onchange=" dialoghandlerv5aad062181303.onchanged('method');" checked value="ROT0"/><div class="mdc-radio__background"><div class="mdc-radio__outer-circle"></div><div class="mdc-radio__inner-circle"></div></div></div><label for="dialogv5aad062181303_method0">ROT0 ("a" transforms to "a")</label></div><div class="mdc-form-field"><div class="mdc-radio"><input type="radio" class="mdc-radio__native-control" id="dialogv5aad062181303_method1" name="method" onclick="dialoghandlerv5aad062181303.onchanged('method');" onchange=" dialoghandlerv5aad062181303.onchanged('method');" value="ROT1"/><div class="mdc-radio__background"><div class="mdc-radio__outer-circle"></div><div class="mdc-radio__inner-circle"></div></div></div><label for="dialogv5aad062181303_method1">ROT1 ("a" transforms to "b")</label></div></div></div>
<p id="hlp_dialogv5aad062181303_method" class="pc-field-msg"></p></div><div class="pc-cell-lg"><div id="ctrl_dialogv5aad062181303_text" class="pc-text mdc-text-field mdc-text-field--upgraded mdc-text-field--textarea"><textarea class="mdc-text-field__input" id="dialogv5aad062181303_text" name="text" aria-controls="hlp_dialogv5aad062181303_text" onchange=" dialoghandlerv5aad062181303.onchanged('text');" onkeypress="return dialoghandlerv5aad062181303.onkeypressed('text', event );" rows="5" cols="60" >ATTACK AT DAWN</textarea>
<label class="mdc-text-field__label mdc-text-field__label--float-above" for="dialogv5aad062181303_text">Text</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5aad062181303_text" class="pc-field-msg"></p></div><div class="pc-cell-sm"><div id="ctrl_dialogv5aad062181303_key" class="pc-text mdc-text-field mdc-text-field--upgraded"><input class="mdc-text-field__input" type="text" value="LEMON" id="dialogv5aad062181303_key" name="key" aria-controls="hlp_dialogv5aad062181303_key" onchange=" dialoghandlerv5aad062181303.onchanged('key');" onkeypress="return dialoghandlerv5aad062181303.onkeypressed('key', event );"/><label class="mdc-text-field__label mdc-text-field__label--float-above" for="dialogv5aad062181303_key">Key</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5aad062181303_key" class="pc-field-msg"></p></div><div class="pc-cell-sm"><div class="pc-control" id="dialogv5aad062181303_transform" aria-controls="hlp_dialogv5aad062181303_transform"><label class="pc-label">Transformation</label><div class="pc-radio-inputs"><div class="mdc-form-field"><div class="mdc-radio"><input type="radio" class="mdc-radio__native-control" id="dialogv5aad062181303_transform0" name="transform" onclick="dialoghandlerv5aad062181303.onchanged('transform');" onchange=" dialoghandlerv5aad062181303.onchanged('transform');" checked value="c"/><div class="mdc-radio__background"><div class="mdc-radio__outer-circle"></div><div class="mdc-radio__inner-circle"></div></div></div><label for="dialogv5aad062181303_transform0">Encrypt</label></div><div class="mdc-form-field"><div class="mdc-radio"><input type="radio" class="mdc-radio__native-control" id="dialogv5aad062181303_transform1" name="transform" onclick="dialoghandlerv5aad062181303.onchanged('transform');" onchange=" dialoghandlerv5aad062181303.onchanged('transform');" value="d"/><div class="mdc-radio__background"><div class="mdc-radio__outer-circle"></div><div class="mdc-radio__inner-circle"></div></div></div><label for="dialogv5aad062181303_transform1">Decrypt</label></div></div></div>
<p id="hlp_dialogv5aad062181303_transform" class="pc-field-msg"></p></div><div class="pc-cell-sm" style="display:none;"><div id="dialogv5aad062181303_res"><script>
var dialogv5aad062181303_res_data={"badkey":"Key contains bad alphabet","aselector":{"english":"English","russian":"Russian","russiannoYO":"Russian (without ё)","spanish":"Spanish"},"method":{"ROT0":"ROT0 (\"a\" transforms to \"a\")","ROT1":"ROT1 (\"a\" transforms to \"b\")"},"transform":{"c":"Encrypt","d":"Decrypt"}};
</script></div></div><div class="pc-cell-lg"><div id="dialogv5aad062181303__line" class="labelctrl"><div class="pc-actions"><button type="button" id="dialogv5aad062181303_calculate" onclick="dialoghandlerv5aad062181303.recalculate(500); return BSPreventDefaultAction(event);" class="mdc-button mdc-button--raised mdc-theme--secondary-bg pc-btn-calc"><span id="dialogv5aad062181303_button_text">Calculate</span></button></div></div></div><div class="pc-cell-lg"><div class="pc-progress-cell"><div id="dialogv5aad062181303__progress_" role="progressbar" class="pc-progress mdc-linear-progress mdc-linear-progress--indeterminate mdc-linear-progress--accent"><div class="mdc-linear-progress__buffering-dots"></div><div class="mdc-linear-progress__buffer"></div><div class="mdc-linear-progress__bar mdc-linear-progress__primary-bar"><span class="mdc-linear-progress__bar-inner"></span></div><div class="mdc-linear-progress__bar mdc-linear-progress__secondary-bar"><span class="mdc-linear-progress__bar-inner"></span></div></div></div></div><div class="pc-cell-lg"><div class="pc-output-label">Transformed text</div><div class="pc-output-value pc-value-textoutputlong" id="dialogv5aad062181303_transformed"> </div></div><div class="pc-cell-lg"><div class="pc-group-footer"><span class="pc-licmark"><a href="https://planetcalc.com/2463/?license=1" target=_top><img src="/img/lic/by-sa_s.png" alt="Creative Commons Attribution/Share-Alike License 3.0 (Unported)"/></a></span> Created on PLANETCALC<div class="pc-profile pc-licmark"></div></div></div></div><script>
var dialogv5aad062181303 = new Dialogv5aad062181303();
var dialoghandlerv5aad062181303 = new function ( ) { var me=this;this.Dialog = null;this.CalculatorID = 2463;var savedData = {};var outerParent = this;
var Planetcalc = new function() {
var innerParent = this;};this.initdialog = function ( dlg ) { this.Dialog = dlg;if ( !window.CurrentPageCalculators ) { window.CurrentPageCalculators = []; }window.CurrentPageCalculators[window.CurrentPageCalculators.length]=this;this.outputs = {};this.outputTables={};this.Dialog.transformed.formatter =new FormatterSame( );this.outputs['transformed']=this.Dialog.transformed;if ( this.Dialog.text ) { PSS.LoadInput("2463","text", this.Dialog.text,savedData["text"]);}if ( this.Dialog.key ) { PSS.LoadInput("2463","key", this.Dialog.key,savedData["key"]);}if ( this.Dialog.transform ) { PSS.LoadInput("2463","transform", this.Dialog.transform,savedData["transform"]);}if ( this.Dialog.method ) { PSS.LoadInput("2463","method", this.Dialog.method,savedData["method"]);}if ( this.Dialog.res ) { PSS.LoadInput("2463","res", this.Dialog.res,savedData["res"]);}if ( this.Dialog.aselector ) { PSS.LoadInput("2463","aselector", this.Dialog.aselector,savedData["aselector"]);}this.setTimerIcon( true );this.notInitializedDataCount=0; this.refresh();};this.showControlError = function ( e ) {if ( typeof(e)=="object" && e.source && e.message && this.Dialog[e.source] && this.Dialog[e.source].ShowError ) {this.Dialog[e.source].ShowError( e.message );return true; };return false; };this.GetInputValues = function ( ) { var vals ={};vals['text'] = this.Dialog.text.GetValue();vals['key'] = this.Dialog.key.GetValue();vals['transform'] = this.Dialog.transform.GetValue();vals['method'] = this.Dialog.method.GetValue();vals['aselector'] = this.Dialog.aselector.GetValue(); return vals; };this.OnDataSource = function ( name, obj ) { this[ "dataSource_" + name ] = obj; this.notInitializedDataCount-=1; if ( 0==this.notInitializedDataCount) this.refresh(); };this.setTimerIcon = function ( enable ) { var progress = document.getElementById("dialogv5aad062181303__progress_");if ( progress ) progress.style.display=enable?"block":"none";this.enableOutputs(!enable);};this.enableOutputs = function( enable ) {this.Dialog.transformed.GetElement().style.visibility=(enable?"visible":"hidden");};this.onkeypressed = function ( controlid, evt ) { return true;};this.refreshTimer= 0;this.profile = 0;this.sinks= {change:[],profile:[],save:[]};this.mustfire = false;
this.addEventListener = function ( name, sink ) {if ( me.sinks[name] ) me.sinks[name].push( sink );};
this.removeEventListener = function ( name, sink ) {if ( me.sinks[name] ) for( var i=0;i<me.sinks[name].length;++i )
if ( me.sinks[name][i] == sink ) { me.sinks[name].splice( i,1); break; }};this.setProfile = function( data, n ) { me.profile=data; if( data ) { me.Dialog.SetValues( me.profile.data );
$('#dialogv5aad062181303').find('.pc-profile').html(PCF.formatProfile(data));}else me.Dialog.Clear(); me.update(); for(var i=0;i<me.sinks.profile.length;++i) me.sinks.profile[i]({detail:{profile:data,created:n}});}; this.getProfile = function(){ return me.profile;};this.update = function ( ) {me.mustfire = false;if ( this.Dialog.Validate() ) { this.recalculate(1500);}};this.getInputData = function( cookie ) { var data = {};if ( this.Dialog.text ) data['text']=this.Dialog.text.GetValue();if ( this.Dialog.key ) data['key']=this.Dialog.key.GetValue();if ( this.Dialog.transform ) data['transform']=this.Dialog.transform.GetValue();if ( this.Dialog.method ) data['method']=this.Dialog.method.GetValue();if ( this.Dialog.res ) data['res']=this.Dialog.res.GetValue();if ( this.Dialog.aselector ) data['aselector']=this.Dialog.aselector.GetValue();return data;};this.save = function( cookie ) { var data = me.getInputData();for( var i=0;i<me.sinks.save.length;++i) me.sinks.save[i]( { "detail": { "values":data, "data":cookie }});};this.onchanged = function ( controlid ) {var control = this.Dialog[ controlid ];if ( control.ValidateCurrent() && this.Dialog.Validate() ) { me.mustfire = true;
this.recalculate(1500);} else me.mustfire = false;};this.recalculate= function ( timeout ) {
this.changeDisplayOptions();if (this.progressControl.isInProgress()) { this.progressControl.stop(); return;}if (this.refreshTimer) { clearTimeout(this.refreshTimer); }if ( this.Dialog.text ) { PSS.SaveInput("2463","text", this.Dialog.text);}if ( this.Dialog.key ) { PSS.SaveInput("2463","key", this.Dialog.key);}if ( this.Dialog.transform ) { PSS.SaveInput("2463","transform", this.Dialog.transform);}if ( this.Dialog.method ) { PSS.SaveInput("2463","method", this.Dialog.method);}if ( this.Dialog.res ) { PSS.SaveInput("2463","res", this.Dialog.res);}if ( this.Dialog.aselector ) { PSS.SaveInput("2463","aselector", this.Dialog.aselector);}dialoghandlerv5aad062181303.setTimerIcon(true); this.refreshTimer=setTimeout('dialoghandlerv5aad062181303.refresh()',timeout);};
function CalcProgressControl( calcHandler ) { var me=this; var shouldContinue=false; var shouldStop=false; me.context = null; me.isInProgress=function( ){ return me.context!=null;}
function setButtonLabel( lbl ){ document.getElementById("dialogv5aad062181303_button_text").innerHTML=lbl; }this.stop=function(){};this.clear=function(){};this.repeat=function(){};this.shouldRepeat=function(){ return false;};};
this.progressControl = new CalcProgressControl( this );this.repeat = function() { this.refresh(true); }; this.refresh = function ( repeat ) { var me = this;
me.refresh_complete(repeat);
};
this.refresh_complete = function ( repeat ) {if ( !repeat ) { this.progressControl.context = null;}if ( this.notInitializedDataCount>0 ) return;clearTimeout(this.refreshTimer); this.refreshTimer=0;this.setTimerIcon(true);try {if ( !this.progressControl.context ) {} this.changeDisplayOptions();
this.calculate(this.Dialog.text.GetValue(), this.Dialog.key.GetValue(), this.Dialog.transform.GetValue(), this.Dialog.method.GetValue(), this.Dialog.res.GetValue(), this.Dialog.aselector.GetValue(), this.Dialog.transformed);} catch( e ) {
if ( !this.showControlError( e )) {alert( e.message ); }}if ( this.progressControl.shouldRepeat() ) { if (this.refreshTimer) { clearTimeout(this.refreshTimer); } this.refreshTimer=setTimeout('dialoghandlerv5aad062181303.repeat()',200);this.enableOutputs(true);} else {this.setTimerIcon(false);this.progressControl.clear();if (me.mustfire) { me.mustfire=false; for(var i=0;i<me.sinks.change.length;++i) me.sinks.change[i](); }if ( PCF.requestFormulaUpdate( false ) ) {
require(["mathjax"],function( mjx ) {
mjx.Hub.Queue(["Typeset",mjx.Hub]);
});};}};this.changeDisplayOptions = function () {this.calculateDisplay(new function ( val ) {this.GetValue = function() { return val.GetValue();}
this.Display = function( y ) { if( y ) val.Show(); else val.Hide(); }
}(this.Dialog.text), new function ( val ) {this.GetValue = function() { return val.GetValue();}
this.Display = function( y ) { if( y ) val.Show(); else val.Hide(); }
}(this.Dialog.key), new function ( val ) {this.GetValue = function() { return val.GetValue();}
this.Display = function( y ) { if( y ) val.Show(); else val.Hide(); }
}(this.Dialog.transform), new function ( val ) {this.GetValue = function() { return val.GetValue();}
this.Display = function( y ) { if( y ) val.Show(); else val.Hide(); }
}(this.Dialog.method), new function ( val ) {this.GetValue = function() { return val.GetValue();}
this.Display = function( y ) { if( y ) val.Show(); else val.Hide(); }
}(this.Dialog.res), new function ( val ) {this.GetValue = function() { return val.GetValue();}
this.Display = function( y ) { if( y ) val.Show(); else val.Hide(); }
}(this.Dialog.aselector), new function ( val ) {this.Display = function( y ) { if( y ) val.Show(); else val.Hide(); }
}(this.Dialog.transformed));
}
this.calculateDisplay = function ( text, key, transform, method, res, aselector, transformed )
{
};
this.calculate = function ( text, key, transform, method, res, aselector, transformed ) {
var alphabeths = {
russian : "абвгдеёжзийклмнопрстуфхцчшщъыьэюя", russiannoYO : "абвгдежзийклмнопрстуфхцчшщъыьэюя", english : "abcdefghijklmnopqrstuvwxyz", spanish : "abcdefghijklmnñopqrstuvwxyz"
}
function aindex(symbol)
{
for(var i = 0; i < alphabeths[aselector].length; ++i)
{
if (alphabeths[aselector][i] == symbol)
return i;
}
return -1;
}
var tabula_recta = new Array();
for(var i = 0; i < alphabeths[aselector].length; ++i)
{
var trow = new Array();
for(var j = 0; j < alphabeths[aselector].length; ++j)
trow[j] = alphabeths[aselector][ (method == "ROT0") ? ((i + j) % alphabeths[aselector].length) : (i + j + 1) % alphabeths[aselector].length ];
tabula_recta[i] = trow;
}
var keycopy = new Array();
var symbol = 0;
for(var i = 0; i < key.length; ++i)
{
if (aindex(key[i].toLowerCase()) != -1)
keycopy[symbol++] = key[i];
}
if (!keycopy.length)
throw {"source": "key", "message":res["badkey"]};
var res = "";
var symbol = 0;
for(var i = 0; i < text.length; ++i)
{
if (transform == "c")
{
var idx = aindex(text[i].toLowerCase());
if (idx != -1)
{
var key = aindex(keycopy[symbol % keycopy.length].toLowerCase());
res += tabula_recta[key][idx];
symbol++;
}
else
res += text[i];
}
else if (transform == "d")
{
var idx = aindex(text[i].toLowerCase());
if (idx != -1)
{
var key = aindex(keycopy[symbol % keycopy.length].toLowerCase());
for(var j = 0; j < alphabeths[aselector].length; j++)
{
if (tabula_recta[key][j] == text[i].toLowerCase())
{
res += alphabeths[aselector][j] ;
}
}
symbol++;
}
else
res += text[i];
}
}
transformed.SetValue(res);
};}
;
dialoghandlerv5aad062181303.initdialog(dialogv5aad062181303);
</script></div><div class="ads-inline"><div id="div-gpt-ad-1521620115-2"><script>googletag.display("div-gpt-ad-1521620115-2");</script></div></div>
<div id="dialogv5aad062181303_user_data_3084"><blockquote id="dialogv5aad062181303_user_data_3084_note"><button class="mdc-button pc-btn-new mdc-button--raised pull-right">Save</button> Save the calculation to reuse next time or share with friends.</blockquote><div style="display:none" class="pc-data-table" id="dialogv5aad062181303_user_data_3084_table"><header><button type="button" class="pc-btn-round mdc-button pc-btn-new" title="Add"><i class="material-icons">add</i></button><button type="button" disabled class="pc-btn-round mdc-button pc-btn-save pc-btn__single" title="Save"><i class="material-icons">save</i></button><button type="button" disabled class="pc-btn-round mdc-button pc-btn-edit" title="Edit"><i class="material-icons">mode_edit</i></button><button type="button" disabled class="pc-btn-round mdc-button pc-btn-delete" title="Delete"><i class="material-icons">delete</i></button><h4 class="pc-title pc-name" title="My calculations">My calculations</h4><span class="pc-items hidden"></span></header><table class="pc-editable"><thead><tr><th class="pc-column-header pc-column-check"><div class="mdc-checkbox"><input class="mdc-checkbox__native-control" type="checkbox"/><div class="mdc-checkbox__background"><svg class="mdc-checkbox__checkmark" viewBox="0 0 24 24">
<path class="mdc-checkbox__checkmark__path" fill="none" stroke="white" d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg>
<div class="mdc-checkbox__mixedmark"></div></div></div></th><th aria-sort="none" class="pc-column-header pc-align-l"><i class="material-icons pc-desc hidden">arrow_upward</i><i class="material-icons pc-asc hidden">arrow_downward</i>Name</th><th aria-sort="none" class="pc-column-header pc-align-l"><i class="material-icons pc-desc hidden">arrow_upward</i><i class="material-icons pc-asc hidden">arrow_downward</i></th><th aria-sort="descending" class="pc-column-header pc-align-l"><i class="material-icons pc-desc ">arrow_upward</i><i class="material-icons pc-asc hidden">arrow_downward</i>Created</th></tr><tbody><tr class="hidden pc-data-row"><td class="pc-column-check"><div class="mdc-checkbox"><input class="mdc-checkbox__native-control" type="checkbox"/><div class="mdc-checkbox__background"><svg class="mdc-checkbox__checkmark" viewBox="0 0 24 24">
<path class="mdc-checkbox__checkmark__path" fill="none" stroke="white" d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg>
<div class="mdc-checkbox__mixedmark"></div></div></div></td><td></td><td></td><td></td></tr></tbody></table><footer class="pc-paging"><span class="pc-paging-items">Items per page: </span><select class="mdc-select"><option value="5" selected>5</option><option value="10">10</option><option value="20">20</option><option value="50">50</option><option value="100">100</option></select><span data-pattern="%1 of %2" class="pc-paging-current"></span><button type="button" class="pc-btn-round mdc-button pc-button-prev" title="Previous page"><i class="material-icons">chevron_left</i></button><button type="button" class="pc-btn-round mdc-button pc-button-next" title="Next page"><i class="material-icons">chevron_right</i></button></footer></div><script>function Cdialoghandlerv5aad062187e0c( ){
var callback = null;this.initdialog = function ( dlg ) { this.Dialog = dlg; };
this.onkeypressed = function ( controlid, evt ) { return true;};
this.onchanged = function ( controlid ) { if (!this.Dialog.Validate()) { return false; } return true; };
this.New = function( cb ) { callback = cb; this.Dialog.SetDefaultValues(); this.Dialog.Show();
};
this.Edit = function( record, cb ) { callback = cb; this.Dialog.SetValues( record ); this.Dialog.Show();
};this.oncommand = function ( buttonid ) { if ( buttonid == "save_label" ) {
if ( !this.Dialog.Validate() ) { return; }
callback( this.Dialog.GetValues());
}
this.Dialog.Hide();
}
}function TableHandlerdialogv5aad062181303_user_data_3084_table( accessor ){var opts = { "accessor":accessor, "formatters" : [{ "name":"name","formatter":new RecordFieldFormatterParamScriptURL( "user_data_3084_handler.accessor.loadData(%1)","id",new RecordFieldFormaterIf( function( rec ){ return rec["name"]; },
new RecordFieldFormatterSame(),new RecordFieldFormatterFixedColumn( "data",new RecordFieldFormatterSequence([new RecordFieldFormatterLabel("<span class=\"mdc-typography--caption mdc-theme--text-hint-on-background\">Text: </span>"),new RecordFieldFormatterChild("text",null),new RecordFieldFormatterLabel("<span class=\"mdc-typography--caption mdc-theme--text-hint-on-background\"> Key: </span>"),new RecordFieldFormatterChild("key",null)]))))}
,{ "name":"code","formatter":new RecordFieldFormatterParamScriptURL( "user_data_3084_handler.accessor.share(%1)","id", new RecordFieldFormatterLabel("<i class=\"material-icons mdc-theme--primary\">share</i>"))}
,{ "name":"created","formatter":new RecordFieldFormatter( new FormatterTimeSpan())}
],"table" : document.getElementById("dialogv5aad062181303_user_data_3084_table"),"dialog" : dialoghandlerv5aad062187e0c}; TableBaseHandler.call( this, opts );
};TableHandlerdialogv5aad062181303_user_data_3084_table.prototype = Object.create(TableBaseHandler.prototype);TableHandlerdialogv5aad062181303_user_data_3084_table.prototype.constructor =TableHandlerdialogv5aad062181303_user_data_3084_table</script><script>
function Dialogv5aad062187e0c() {var me = this; this.ctrl = null; function getControl() { if ( !me.ctrl ) me.ctrl = PLANETCALC.dialog(me.GetElement()); return me.ctrl;};this.GetElement = function () { return document.getElementById( "dialogv5aad062187e0c" ); };this.GetEventHandlerName = function () { return "dialoghandlerv5aad062187e0c"; };this.Show = function () { getControl().show(); };this.Hide = function () { getControl().close(); };this.Busy = function () { SetDialogBusy("dialogv5aad062187e0c"); };this.Free = function () { SetDialogFree("dialogv5aad062187e0c"); };this.SetValues = function ( values ) {for( var inputId in values ) {if ( this[inputId] ) { this[inputId].SetValue( values[inputId] ); }}};
this.name= new DialogInput("name", this, null,new ElementAccessorDefault());
this.id= new DialogInput("id", this, null,new ElementAccessorDefault());
this.save_label= new DialogInput("save_label", this, null,new ElementAccessorDefault());
this.cancel_label= new DialogInput("cancel_label", this, null,new ElementAccessorDefault());this.Clear = function ( ) {this.name.ResetValue();this.id.ResetValue();this.save_label.ResetValue();this.cancel_label.ResetValue();};this.SetDefaultValues = function () {this.name.SetValue(null);this.id.SetValue("");this.save_label.SetValue(null);this.cancel_label.SetValue(null);};this.GetValues = function () {var retval = {};retval["name"]=this.name.GetValue();retval["id"]=this.id.GetValue();retval["save_label"]=this.save_label.GetValue();retval["cancel_label"]=this.cancel_label.GetValue();return retval;};this.ShowError = function ( obj, text ) {showError( obj, text, "error_box_v5aad062187e0c");};this.Validate = function ( ) {if (!this.name.ValidateCurrent() ) { return false; }if (!this.id.ValidateCurrent() ) { return false; }if (!this.save_label.ValidateCurrent() ) { return false; }if (!this.cancel_label.ValidateCurrent() ) { return false; }return true;};};
</script><aside class="mdc-dialog pc-dialog" id="dialogv5aad062187e0c"><div class="mdc-dialog__surface"><header class="mdc-dialog__header"><h2 class="mdc-dialog__header__title" id="dialogv5aad062187e0c__title">My calculations</h2></header><div class="mdc-dialog__body"><div class="pc-grid-inner"><div class="pc-cell-lg"><div id="ctrl_dialogv5aad062187e0c_name" class="pc-text mdc-text-field"><input class="mdc-text-field__input" type="text" id="dialogv5aad062187e0c_name" aria-controls="hlp_dialogv5aad062187e0c_name" onchange=" dialoghandlerv5aad062187e0c.onchanged('name');" onkeypress="return dialoghandlerv5aad062187e0c.onkeypressed('name', event );"/><label class="mdc-text-field__label" for="dialogv5aad062187e0c_name">Name</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5aad062187e0c_name" class="pc-field-msg"></p></div><input type="hidden" value="" id="dialogv5aad062187e0c_id"/></div></div><footer class="mdc-dialog__footer"><button class="mdc-button" type="button" id="dialogv5aad062187e0c_save_label">Save</button>
<script>function onclick_v5aad062187e0csave_label( evt ) {dialoghandlerv5aad062187e0c.oncommand('save_label'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5aad062187e0c_save_label'), 'click', onclick_v5aad062187e0csave_label, 'form');</script><button class="mdc-button" type="button" id="dialogv5aad062187e0c_cancel_label">Cancel</button>
<script>function onclick_v5aad062187e0ccancel_label( evt ) {dialoghandlerv5aad062187e0c.oncommand('cancel_label'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5aad062187e0c_cancel_label'), 'click', onclick_v5aad062187e0ccancel_label, 'form');</script></footer></div><div class="mdc-dialog__backdrop"></div></aside><div><script>
var dialogv5aad062187e0c = new Dialogv5aad062187e0c();
var dialoghandlerv5aad062187e0c = new Cdialoghandlerv5aad062187e0c();
dialoghandlerv5aad062187e0c.initdialog(dialogv5aad062187e0c);
</script></div></div><script>
function Dialogdsdialogv5aad062181303_user_data_3084() {var me = this; this.ctrl = null; function getControl() { if ( !me.ctrl ) me.ctrl = PLANETCALC.dialog(me.GetElement()); return me.ctrl;};this.GetElement = function () { return document.getElementById( "dialogdsdialogv5aad062181303_user_data_3084" ); };this.GetEventHandlerName = function () { return "dialoghandlerdsdialogv5aad062181303_user_data_3084"; };this.Show = function () { getControl().show(); };this.Hide = function () { getControl().close(); };this.Busy = function () { SetDialogBusy("dialogdsdialogv5aad062181303_user_data_3084"); };this.Free = function () { SetDialogFree("dialogdsdialogv5aad062181303_user_data_3084"); };this.SetValues = function ( values ) {for( var inputId in values ) {if ( this[inputId] ) { this[inputId].SetValue( values[inputId] ); }}};
this.link= new DialogInput("link", this, null,new ElementAccessorDefault());
this.cancel= new DialogInput("cancel", this, null,new ElementAccessorDefault());this.Clear = function ( ) {this.link.ResetValue();this.cancel.ResetValue();};this.SetDefaultValues = function () {this.link.SetValue(null);this.cancel.SetValue(null);};this.GetValues = function () {var retval = {};retval["link"]=this.link.GetValue();retval["cancel"]=this.cancel.GetValue();return retval;};this.ShowError = function ( obj, text ) {showError( obj, text, "error_box_dsdialogv5aad062181303_user_data_3084");};this.Validate = function ( ) {if (!this.link.ValidateCurrent() ) { return false; }if (!this.cancel.ValidateCurrent() ) { return false; }return true;};};
</script><aside class="mdc-dialog pc-dialog" id="dialogdsdialogv5aad062181303_user_data_3084"><div class="mdc-dialog__surface"><header class="mdc-dialog__header"><h2 class="mdc-dialog__header__title" id="dialogdsdialogv5aad062181303_user_data_3084__title">Share this calculation</h2></header><div class="mdc-dialog__body"><div class="pc-grid-inner"><div class="pc-cell-lg"><div id="ctrl_dialogdsdialogv5aad062181303_user_data_3084_link" class="pc-text mdc-text-field"><input class="mdc-text-field__input" type="text" id="dialogdsdialogv5aad062181303_user_data_3084_link" aria-controls="hlp_dialogdsdialogv5aad062181303_user_data_3084_link" onchange=" dialoghandlerdsdialogv5aad062181303_user_data_3084.onchanged('link');" onkeypress="return dialoghandlerdsdialogv5aad062181303_user_data_3084.onkeypressed('link', event );"/><label class="mdc-text-field__label" for="dialogdsdialogv5aad062181303_user_data_3084_link">Link</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogdsdialogv5aad062181303_user_data_3084_link" class="pc-field-msg"></p></div></div></div><footer class="mdc-dialog__footer"><button class="mdc-button" type="button" id="dialogdsdialogv5aad062181303_user_data_3084_cancel">Close</button>
<script>function onclick_dsdialogv5aad062181303_user_data_3084cancel( evt ) {dialoghandlerdsdialogv5aad062181303_user_data_3084.oncommand('cancel'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogdsdialogv5aad062181303_user_data_3084_cancel'), 'click', onclick_dsdialogv5aad062181303_user_data_3084cancel, 'form');</script></footer></div><div class="mdc-dialog__backdrop"></div></aside><div><script>
var dialogdsdialogv5aad062181303_user_data_3084 = new Dialogdsdialogv5aad062181303_user_data_3084();
var dialoghandlerdsdialogv5aad062181303_user_data_3084 = new function(){
this.Dialog=null;
this.onchanged = function () { };
this.onkeypressed = function() { return false; }
this.initdialog = function (dialog) {
this.Dialog = dialog;
$(this.Dialog.link.GetElement()).click( function( evt ) {
evt.target.select();
});
};
this.oncommand = function ( ) {
this.Dialog.Hide();
};
};
dialoghandlerdsdialogv5aad062181303_user_data_3084.initdialog(dialogdsdialogv5aad062181303_user_data_3084);
</script></div><script>var user_data_3084_handler = new TableHandlerdialogv5aad062181303_user_data_3084_table(new UserDataHandler( { "id":"dialogv5aad062181303_user_data_3084", "calcid": "2463","handler" : dialoghandlerv5aad062181303,"tableid" : "dialogv5aad062181303_user_data_3084_table","noteid" : "dialogv5aad062181303_user_data_3084_note","shareDlg" : dialoghandlerdsdialogv5aad062181303_user_data_3084.Dialog, "getTableHandler" : function () { return user_data_3084_handler; }}));</script>
<p></p></div></div><div class="tags_cloud">Tags: <a class="tag0" href="/search/?tag=4430" >#cipher</a> <a class="tag0" href="/2468/" >#cypher</a> <a class="tag4" href="/search/?tag=1462" >Computers</a> <a class="tag0" href="/search/?tag=1874" >Vigenere</a> <a class="tag0" href="/search/?tag=1873" >Vigenère cipher</a> <a class="tag2" href="/search/?tag=1204" >cryptography</a> <a class="tag0" href="/search/?tag=1875" >decryption</a> <a class="tag1" href="/search/?tag=1207" >encryption</a> <a class="tag5" href="/search/?tag=1203" >text</a> </div><div id="comments"><script>
function DialogGetIdentityv5ab21493706ca() {var me = this; this.ctrl = null; function getControl() { if ( !me.ctrl ) me.ctrl = PLANETCALC.dialog(me.GetElement()); return me.ctrl;};this.GetElement = function () { return document.getElementById( "dialogv5ab21493706ca" ); };this.GetEventHandlerName = function () { return "dialoghandlerv5ab21493706ca"; };this.Show = function () { getControl().show(); };this.Hide = function () { getControl().close(); };this.Busy = function () { SetDialogBusy("dialogv5ab21493706ca"); };this.Free = function () { SetDialogFree("dialogv5ab21493706ca"); };this.SetValues = function ( values ) {for( var inputId in values ) {if ( this[inputId] ) { this[inputId].SetValue( values[inputId] ); }}};
this.user_or_not= new DialogInput("user_or_not", this, null,new ElementAccessorDefault());
this.user= new DialogInput("user", this, null,new ElementAccessorDefault());
this.hdr_social= new DialogInput("hdr_social", this, null,new ElementAccessorDefault());
this.facebook= new DialogInput("facebook", this, null,new ElementAccessorDefault());
this.vkontakte= new DialogInput("vkontakte", this, null,new ElementAccessorDefault());
this.twitter= new DialogInput("twitter", this, null,new ElementAccessorDefault());
this.hdr_email= new DialogInput("hdr_email", this, null,new ElementAccessorDefault());
this.login_useremail= new DialogInput("login_useremail", this, new ValidatorEmail( ),new ElementAccessorDefault());
this.login_userpassword= new DialogInput("login_userpassword", this, new ValidatorNonempty( ),new ElementAccessorDefault());
this.anon= new DialogInput("anon", this, null,new ElementAccessorDefault());
this.anon_name= new DialogInput("anon_name", this, new ValidatorTextSize( 3,100 ),new ElementAccessorDefault());
this.code= new DialogInput("code", this, new ValidatorComplex( new ValidatorCharset( '0123456789abcdefABCDEF' ), new ValidatorTextSize( 5,5 ) ),new ElementAccessorDefault());
this.progress= new DialogInput("progress", this, null,new ElementAccessorDefault());
this.cancel= new DialogInput("cancel", this, null,new ElementAccessorDefault());
this.send= new DialogInput("send", this, null,new ElementAccessorDefault());this.Clear = function ( ) {this.user_or_not.ResetValue();this.hdr_social.ResetValue();this.facebook.ResetValue();this.vkontakte.ResetValue();this.twitter.ResetValue();this.hdr_email.ResetValue();this.login_useremail.ResetValue();this.login_userpassword.ResetValue();this.anon_name.ResetValue();this.code.ResetValue();this.progress.ResetValue();this.cancel.ResetValue();this.send.ResetValue();};this.SetDefaultValues = function () {this.user_or_not.SetValue("user");this.hdr_social.SetValue("Sign in with");this.facebook.SetValue(null);this.vkontakte.SetValue(null);this.twitter.SetValue(null);this.hdr_email.SetValue("Sign in with Email");this.login_useremail.SetValue(null);this.login_userpassword.SetValue(null);this.anon_name.SetValue(null);this.code.SetValue(null);this.progress.SetValue(null);this.cancel.SetValue(null);this.send.SetValue(null);};this.GetValues = function () {var retval = {};retval["user_or_not"]=this.user_or_not.GetValue();retval["hdr_social"]=this.hdr_social.GetValue();retval["facebook"]=this.facebook.GetValue();retval["vkontakte"]=this.vkontakte.GetValue();retval["twitter"]=this.twitter.GetValue();retval["hdr_email"]=this.hdr_email.GetValue();retval["login_useremail"]=this.login_useremail.GetValue();retval["login_userpassword"]=this.login_userpassword.GetValue();retval["anon_name"]=this.anon_name.GetValue();retval["code"]=this.code.GetValue();retval["progress"]=this.progress.GetValue();retval["cancel"]=this.cancel.GetValue();retval["send"]=this.send.GetValue();return retval;};this.ShowError = function ( obj, text ) {showError( obj, text, "error_box_v5ab21493706ca");};this.Validate = function ( ) {if (!this.user_or_not.ValidateCurrent() ) { return false; }if (!this.hdr_social.ValidateCurrent() ) { return false; }if (!this.facebook.ValidateCurrent() ) { return false; }if (!this.vkontakte.ValidateCurrent() ) { return false; }if (!this.twitter.ValidateCurrent() ) { return false; }if (!this.hdr_email.ValidateCurrent() ) { return false; }if (!this.login_useremail.ValidateCurrent() ) { return false; }if (!this.login_userpassword.ValidateCurrent() ) { return false; }if (!this.anon_name.ValidateCurrent() ) { return false; }if (!this.code.ValidateCurrent() ) { return false; }if (!this.progress.ValidateCurrent() ) { return false; }if (!this.cancel.ValidateCurrent() ) { return false; }if (!this.send.ValidateCurrent() ) { return false; }return true;};};
</script><aside class="mdc-dialog pc-dialog" id="dialogv5ab21493706ca"><div class="mdc-dialog__surface"><header class="mdc-dialog__header"><nav class="mdc-tab-bar pc-nomargin" id="ctrl_dialogv5ab21493706ca_user_or_not" aria-controls="hlp_dialogv5ab21493706ca_user_or_not">
<a href="#" class="mdc-tab mdc-tab-active" onclick="document.getElementById('dialogv5ab21493706ca_user_or_not').value='user';dialoghandlerv5ab21493706ca.onchanged('user_or_not'); return BSPreventDefaultAction(event);">Login</a>
<a href="#" class="mdc-tab" onclick="document.getElementById('dialogv5ab21493706ca_user_or_not').value='anon';dialoghandlerv5ab21493706ca.onchanged('user_or_not'); return BSPreventDefaultAction(event);">Send without sign in.</a>
<span class="mdc-tab-bar__indicator"></span></nav>
<input type="hidden" value="user" id="dialogv5ab21493706ca_user_or_not"/><p id="hlp_dialogv5ab21493706ca_user_or_not" class="pc-field-msg"></p></header><div class="mdc-dialog__body"><div class="pc-grid-inner"><div class="pc-cell-lg"><div class="pc-grid-inner pc-dialog-group" id="dialogv5ab21493706ca_user"><div class="pc-cell-lg"><div id="dialogv5ab21493706ca_hdr_social" class="labelctrl">Sign in with</div></div><div class="pc-actions pc-cell-lg"><button class="mdc-button mdc-button--stroked" type="button" id="dialogv5ab21493706ca_facebook"><i class="fa fa-facebook"></i></button>
<script>function onclick_v5ab21493706cafacebook( evt ) {dialoghandlerv5ab21493706ca.oncommand('facebook'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5ab21493706ca_facebook'), 'click', onclick_v5ab21493706cafacebook, 'form');</script><button class="mdc-button mdc-button--stroked" type="button" id="dialogv5ab21493706ca_vkontakte"><i class="fa fa-vk"></i></button>
<script>function onclick_v5ab21493706cavkontakte( evt ) {dialoghandlerv5ab21493706ca.oncommand('vkontakte'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5ab21493706ca_vkontakte'), 'click', onclick_v5ab21493706cavkontakte, 'form');</script><button class="mdc-button mdc-button--stroked" type="button" id="dialogv5ab21493706ca_twitter"><i class="fa fa-twitter"></i></button>
<script>function onclick_v5ab21493706catwitter( evt ) {dialoghandlerv5ab21493706ca.oncommand('twitter'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5ab21493706ca_twitter'), 'click', onclick_v5ab21493706catwitter, 'form');</script></div><div class="pc-cell-lg"><div id="dialogv5ab21493706ca_hdr_email" class="labelctrl">Sign in with Email</div></div><div class="pc-cell-md"><div id="ctrl_dialogv5ab21493706ca_login_useremail" class="pc-text mdc-text-field"><input class="mdc-text-field__input" type="text" id="dialogv5ab21493706ca_login_useremail" aria-controls="hlp_dialogv5ab21493706ca_login_useremail" required onchange="showOrClearError( this, new ValidatorEmail( ).Validate( this.value ),dialoghandlerv5ab21493706ca.Dialog.login_useremail); dialoghandlerv5ab21493706ca.onchanged('login_useremail');" onkeypress="return dialoghandlerv5ab21493706ca.onkeypressed('login_useremail', event );"/><label class="mdc-text-field__label" for="dialogv5ab21493706ca_login_useremail">Email</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5ab21493706ca_login_useremail" class="pc-field-msg"></p></div><div class="pc-cell-md"><div id="ctrl_dialogv5ab21493706ca_login_userpassword" class="pc-text mdc-text-field"><input class="mdc-text-field__input" type="password" id="dialogv5ab21493706ca_login_userpassword" aria-controls="hlp_dialogv5ab21493706ca_login_userpassword" required onchange="showOrClearError( this, new ValidatorNonempty( ).Validate( this.value ),dialoghandlerv5ab21493706ca.Dialog.login_userpassword); dialoghandlerv5ab21493706ca.onchanged('login_userpassword');" onkeypress="return dialoghandlerv5ab21493706ca.onkeypressed('login_userpassword', event );"/><label class="mdc-text-field__label" for="dialogv5ab21493706ca_login_userpassword">Password</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5ab21493706ca_login_userpassword" class="pc-field-msg"></p></div></div></div><div class="pc-cell-lg"><div class="pc-grid-inner pc-dialog-group" id="dialogv5ab21493706ca_anon"><div class="pc-cell-sm"><div id="ctrl_dialogv5ab21493706ca_anon_name" class="pc-text mdc-text-field"><input class="mdc-text-field__input" type="text" size="100" id="dialogv5ab21493706ca_anon_name" aria-controls="hlp_dialogv5ab21493706ca_anon_name" required onchange="showOrClearError( this, new ValidatorTextSize( 3,100 ).Validate( this.value ),dialoghandlerv5ab21493706ca.Dialog.anon_name); dialoghandlerv5ab21493706ca.onchanged('anon_name');" onkeypress="return dialoghandlerv5ab21493706ca.onkeypressed('anon_name', event );"/><label class="mdc-text-field__label" for="dialogv5ab21493706ca_anon_name">Name</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5ab21493706ca_anon_name" class="pc-field-msg"></p></div><div class="pc-cell-sm"><div id="ctrl_dialogv5ab21493706ca_code" class="pc-text mdc-text-field"><input class="mdc-text-field__input" type="text" size="5" id="dialogv5ab21493706ca_code" aria-controls="hlp_dialogv5ab21493706ca_code" required onchange="showOrClearError( this, new ValidatorComplex( new ValidatorCharset( '0123456789abcdefABCDEF' ), new ValidatorTextSize( 5,5 ) ).Validate( this.value ),dialoghandlerv5ab21493706ca.Dialog.code); dialoghandlerv5ab21493706ca.onchanged('code');" onkeypress="return handleOnKeyPressed( event, this, new ValidatorComplex( new ValidatorCharset( '0123456789abcdefABCDEF' ) ),dialoghandlerv5ab21493706ca.Dialog.code) && dialoghandlerv5ab21493706ca.onkeypressed('code', event );"/><label class="mdc-text-field__label" for="dialogv5ab21493706ca_code">Spam filter</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5ab21493706ca_code" class="pc-field-msg"></p><img id="dialogv5ab21493706ca_code_captcha_image" src="/captcha/" alt="Spam filter" class="pc-captcha" onclick="document.getElementById('dialogv5ab21493706ca_code_captcha_image').src = '/captcha/?new='+Math.random();"/></div></div></div><div class="pc-cell-lg"><div class="pc-progress-cell"><div id="dialogv5ab21493706ca_progress" role="progressbar" class="pc-progress mdc-linear-progress mdc-linear-progress--indeterminate mdc-linear-progress--accent"><div class="mdc-linear-progress__buffering-dots"></div><div class="mdc-linear-progress__buffer"></div><div class="mdc-linear-progress__bar mdc-linear-progress__primary-bar"><span class="mdc-linear-progress__bar-inner"></span></div><div class="mdc-linear-progress__bar mdc-linear-progress__secondary-bar"><span class="mdc-linear-progress__bar-inner"></span></div></div></div></div></div></div><footer class="mdc-dialog__footer"><button class="mdc-button" type="button" id="dialogv5ab21493706ca_cancel">Cancel</button>
<script>function onclick_v5ab21493706cacancel( evt ) {dialoghandlerv5ab21493706ca.oncommand('cancel'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5ab21493706ca_cancel'), 'click', onclick_v5ab21493706cacancel, 'form');</script><button class="mdc-button" type="button" id="dialogv5ab21493706ca_send">Send</button>
<script>function onclick_v5ab21493706casend( evt ) {dialoghandlerv5ab21493706ca.oncommand('send'); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5ab21493706ca_send'), 'click', onclick_v5ab21493706casend, 'form');</script></footer></div><div class="mdc-dialog__backdrop"></div></aside><div><script>
var dialogv5ab21493706ca = new DialogGetIdentityv5ab21493706ca();
var dialoghandlerv5ab21493706ca = new IdentityCommentHandler();
dialoghandlerv5ab21493706ca.initdialog(dialogv5ab21493706ca);
</script></div><script>
function Dialogv5ab2149370c4e() {this.GetElement = function () { return document.getElementById( "dialogv5ab2149370c4e" ); };this.GetEventHandlerName = function () { return "dialoghandlerv5ab2149370c4e"; };this.Show = function () { ShowDialog("dialogv5ab2149370c4e"); };this.Hide = function () { HideDialog("dialogv5ab2149370c4e"); };this.Busy = function () { SetDialogBusy("dialogv5ab2149370c4e"); };this.Free = function () { SetDialogFree("dialogv5ab2149370c4e"); };this.SetValues = function ( values ) {for( var inputId in values ) {if ( this[inputId] ) { this[inputId].SetValue( values[inputId] ); }}};
this.message= new DialogInput("message", this, new ValidatorTextSize( 0,5000 ),new ElementAccessorDefault());
this.notify= new DialogInput("notify", this, null,new ElementAccessorCheckbox());
this.messagebox= new DialogInput("messagebox", this, null,new ElementAccessorDefault());
this.progress= new DialogInput("progress", this, null,new ElementAccessorDefault());
this.send= new DialogInput("send", this, null,new ElementAccessorDefault());
this.comments= new DialogInput("comments", this, null,new ElementAccessorDefault());this.Clear = function ( ) {this.message.ResetValue();this.notify.ResetValue();this.messagebox.ResetValue();this.progress.ResetValue();this.send.ResetValue();this.comments.ResetValue();};this.SetDefaultValues = function () {this.message.SetValue("");this.notify.SetValue(null);this.messagebox.SetValue(2472);this.progress.SetValue(null);this.send.SetValue(null);};this.GetValues = function () {var retval = {};retval["message"]=this.message.GetValue();retval["notify"]=this.notify.GetValue();retval["messagebox"]=this.messagebox.GetValue();retval["progress"]=this.progress.GetValue();retval["send"]=this.send.GetValue();retval["comments"]=this.comments.GetValue();return retval;};this.ShowError = function ( obj, text ) {showError( obj, text, "error_box_v5ab2149370c4e");};this.Validate = function ( ) {if (!this.message.ValidateCurrent() ) { return false; }if (!this.notify.ValidateCurrent() ) { return false; }if (!this.messagebox.ValidateCurrent() ) { return false; }if (!this.progress.ValidateCurrent() ) { return false; }if (!this.send.ValidateCurrent() ) { return false; }if (!this.comments.ValidateCurrent() ) { return false; }return true;};};
</script><div class="pc-grid-inner pc-dialog-group" id="dialogv5ab2149370c4e"><div class="pc-cell-lg"><div class="pc-group-header"><h3 class="pc-group-title">Comments</h3></div></div><div class="pc-cell-lg"><div id="ctrl_dialogv5ab2149370c4e_message" class="pc-text mdc-text-field mdc-text-field--upgraded mdc-text-field--textarea"><textarea class="mdc-text-field__input" id="dialogv5ab2149370c4e_message" aria-controls="hlp_dialogv5ab2149370c4e_message" onchange="showOrClearError( this, new ValidatorTextSize( 0,5000 ).Validate( this.value ),dialoghandlerv5ab2149370c4e.Dialog.message); dialoghandlerv5ab2149370c4e.onchanged('message');" onkeypress="return dialoghandlerv5ab2149370c4e.onkeypressed('message', event );" rows="5" cols="80" ></textarea>
<label class="mdc-text-field__label mdc-text-field__label--float-above" for="dialogv5ab2149370c4e_message">Your message</label><div class="mdc-text-field__bottom-line"></div></div><p id="hlp_dialogv5ab2149370c4e_message" class="pc-field-msg"></p></div><div class="pc-cell-lg"><div class="pc-switch"><div class="mdc-switch"><input class="mdc-switch__native-control" type="checkbox" id="dialogv5ab2149370c4e_notify" aria-controls="hlp_dialogv5ab2149370c4e_notify" onchange=" dialoghandlerv5ab2149370c4e.onchanged('notify');"/><div class="mdc-switch__background"><div class="mdc-switch__knob"></div></div></div><label for="dialogv5ab2149370c4e_notify"> Send me notifications</label></div><p id="hlp_dialogv5ab2149370c4e_notify" class="pc-field-msg"></p></div><div class="pc-cell-lg"><div class="pc-progress-cell"><div id="dialogv5ab2149370c4e_progress" role="progressbar" class="pc-progress mdc-linear-progress mdc-linear-progress--indeterminate mdc-linear-progress--accent"><div class="mdc-linear-progress__buffering-dots"></div><div class="mdc-linear-progress__buffer"></div><div class="mdc-linear-progress__bar mdc-linear-progress__primary-bar"><span class="mdc-linear-progress__bar-inner"></span></div><div class="mdc-linear-progress__bar mdc-linear-progress__secondary-bar"><span class="mdc-linear-progress__bar-inner"></span></div></div></div></div><div class="pc-actions pc-cell-lg"><button class="mdc-button mdc-button--raised" type="button" id="dialogv5ab2149370c4e_send">Send</button>
<script>function onclick_v5ab2149370c4esend( evt ) {dialoghandlerv5ab2149370c4e.LoginAndSend(dialoghandlerv5ab21493706ca); return BSPreventDefaultAction( evt );
}
BSAdviseEvent( document.getElementById('dialogv5ab2149370c4e_send'), 'click', onclick_v5ab2149370c4esend, 'form');</script></div><div class="pc-cell-lg"><div id="dialogv5ab2149370c4e_comments" class="placeholder"></div></div><input type="hidden" value="2472" id="dialogv5ab2149370c4e_messagebox"/></div><script>
var dialogv5ab2149370c4e = new Dialogv5ab2149370c4e();
var dialoghandlerv5ab2149370c4e = new CommentFormHandler("https://planetcalc.com/2468/?loginrequirednow=1&language_select=en",null);
dialoghandlerv5ab2149370c4e.initdialog(dialogv5ab2149370c4e);
</script><input type="hidden" id="dialogv5ab2149370c4e_comments_init_data" value="{"params": {"from": 0,"items": 20,"sortcolumn": 1,"sortdirection": "ASC","messagebox": 2472,"language": "en","parent": 0},"recordset": [{"nickname": "NOAH","role": 0,"posts": 12273,"photo": "","web": "","created": "2008-12-19 17:47:56","pkID": 17771,"posted": "2018-02-28 16:22:17","spamVotes": 0,"spamLimit": 5,"message": "<p>BORINGGGGGGGGG</p>","replies": 0,"latest_reply": "0000-00-00 00:00:00","fkUser": 40},{"nickname": "Aviel","role": 0,"posts": 12273,"photo": "","web": "","created": "2008-12-19 17:47:56","pkID": 17601,"posted": "2018-02-16 14:28:30","spamVotes": 0,"spamLimit": 5,"message": "<p>ne'ie eo jtiaegvrj tf lfvv</p>\n<p>Key: RA<br />\nyfu bnfw khv rllvs rnu sf df i<br />\nr fllc cfmdikmvnk's nhrt z'm khznbieg ff<br />\npol wfucde't xek tyij fiod aey ftyei gly<br />\nz jlsk wrnea kecl pol hfw z'm wevlznx<br />\ngftka dabe pol uedvrjtrnu<br />\nnvvvr xoenr gzvv yfu lp<br />\neemei gfnea cek yfu uonn<br />\neemei gfnea iue aiolnu aed uejeit pol<br />\nnvvvr xoenr mrkv yfu trp<br />\nnvvvr xoenr sry xofdsyv<br />\nnvvvr xoenr tvlc a civ aed yuit pol<br />\nwv'vv keonn vath ftyei ffr jo coeg<br />\npolr yerrk's sevn rcyieg suk yfu'ie kof syy ko jap ik<br />\nieszdv wv bfty keon wyak's sevn xoznx oe<br />\nwv keon tye xade rnu wv'rv gfnea glry zt<br />\nrnu iw yfu rsb mv hfw z'm wevlznx<br />\ndfn'k tvlc mv yfu'ie kof bcied ko jev<br />\nnvvvr xoenr gzvv yfu lp<br />\neemei gfnea cek yfu uonn<br />\neemei gfnea iue aiolnu aed uejeit pol<br />\nnvvvr xoenr mrkv yfu trp<br />\nnvvvr xoenr sry xofdsyv<br />\nnvvvr xoenr tvlc a civ aed yuit pol<br />\nnvvvr xoenr gzvv yfu lp<br />\neemei gfnea cek yfu uonn<br />\neemei gfnea iue aiolnu aed uejeit pol<br />\nnvvvr xoenr mrkv yfu trp<br />\nnvvvr xoenr sry xofdsyv<br />\nnvvvr xoenr tvlc a civ aed yuit pol<br />\nnvvvr xoenr gzvv, nvvvr xoenr gzvv<br />\n(gzvv yfu lp)<br />\n(foy) nvvvr xoenr gzvv, nvvvr xoenr gzvv<br />\n(gzvv yfu lp)<br />\nne'me bnfwe ercy okhvr woi sf lfnx<br />\nyfui hvait'j bvee athznx blt pol'rv tfo jhp tf sry zt<br />\nznjiue ne sokh bnfw nhrt'j bvee gfieg fn<br />\nne bnfw khv grmv aed ne'ie xoenr pcap ik<br />\ni aujt naenr tvlc yfu yon i'd fvecieg<br />\nxoktr mrkv yfu lnueiskaed<br />\neemei gfnea xime pol ug<br />\nnvvvr xoenr lvt pol dfwe<br />\nnvvvr xoenr rln rrfued rnu dvsvrk yfu<br />\neemei gfnea dabe pol ciy<br />\neemei gfnea jap gfoubpe<br />\neemei gfnea kecl r lze rnu hlrk yfu<br />\neemei gfnea xime pol ug<br />\nnvvvr xoenr lvt pol dfwe<br />\nnvvvr xoenr rln rrfued rnu dvsvrk yfu<br />\neemei gfnea dabe pol ciy<br />\neemei gfnea jap gfoubpe<br />\neemei gfnea kecl r lze rnu hlrk yfu<br />\neemei gfnea xime pol ug<br />\nnvvvr xoenr lvt pol dfwe<br />\nnvvvr xoenr rln rrfued rnu dvsvrk yfu