ডাকোটা গুলো বিভ্রান্ত করুন [বন্ধ]


20

রাজ্যের যোগাযোগগুলি এনক্রিপ্ট করার জন্য আপনাকে উত্তর ডাকোটা সরকার নিয়োগ দিয়েছে। দুটি প্রোগ্রাম লিখুন, একটি বার্তা এনক্রিপ্ট করার জন্য এবং একটি বার্তাটি ডিক্রিপ্ট করার জন্য।

সরকার আসলে প্রযুক্তি-বুদ্ধিমান নয়, সুতরাং এনক্রিপশন অ্যালগরিদমকে পরিশীলিত করার দরকার নেই; কেবল প্রথম নজরে ফলাফলটি আসলটির মতো না দেখায় তা নিশ্চিত করুন।

তবে, আপনি গোপনে দক্ষিণ দাকোটান সরকারের অনুগত। আপনার কাজ যাতে প্রতিটি উল্লেখ, যোগাযোগ তালগোল হয় North Dakotaহয়ে South Dakotaডিক্রিপশন উপর তদ্বিপরীত, এবং। এই ক্ষেত্রে প্রযোজ্য North/South Dakotanএবং North/South Dakotans

উদাহরণ স্বরূপ:

উত্তর ডাকোটা উত্তর আমেরিকার সবচেয়ে ধনী কাউন্টি, অন্যদিকে দক্ষিণ ডাকোটান দক্ষিণ ফ্লোরিডার চেয়ে দরিদ্র। - উত্তর ডাকোটান সরকার

এনক্রিপশন এবং তারপরে ডিক্রিপশন এর মধ্য দিয়ে যাবে যার ফলস্বরূপ:

দক্ষিণ ডাকোটা উত্তর আমেরিকার সবচেয়ে ধনী কাউন্টি, অন্যদিকে দক্ষিণ ডাকোটা দক্ষিণ ফ্লোরিডার চেয়ে দরিদ্র। - দক্ষিণ ডাকোটান সরকার

সর্বাধিক উত্সাহের দ্বারা প্রমাণিত যে অ্যালগরিদম এটি সবচেয়ে গোপনীয়, কৌতুকপূর্ণভাবে সম্পাদন করে তা গ্রহণযোগ্য হবে।


একটি সহজ string.replaceকাজ করবে? কারণ আপনি বলেছিলেন যে লোকেরা প্রকৃতপক্ষে টেকনোলজিতে নেই;)
কেনার্ড

@ কিনার্ড আমি ভাবতে পেরেছিলাম আপনি পারতেন, তবে এটি একটি পপকন ...
Sp3000

@ এসপি 3000 হ্যাঁ, আপনি ঠিক বলেছেন ...
কেনার্ড

সংবেদনশীল কেস?
অপ্টিমাইজার

6
আমি এই প্রশ্নটিকে অফ-টপিক হিসাবে বন্ধ করতে ভোট দিচ্ছি কারণ সাইটের নীতির অধীনে আন্ডারহ্যান্ডেড প্রশ্নগুলির আর অনুমতি নেই।
কায়ার্ড কইনিরিংহিংহ

উত্তর:


13

চুনি

class Dakota

  PRIVATE_KEY = 8411088

  def self.encrypt(str)
    str.gsub(/[A-Z]/){|c|"0#{c.downcase}"}.gsub(/[a-z]+/){|s|xor(s.to_i(36),$')}
  end

  def self.decrypt(str)
    str.gsub(/\d+/){|s|out = s.to_i.to_s(36);out[0] = out[0].upcase if s[0]==?0; out}
  end

  def self.xor(n, config)
    n^=PRIVATE_KEY if private_env?(config)
    n
  end

  def self.private_env?(config)
    config =~ /^ .#{private}/i
  end

end

puts code = Dakota.encrypt("North Dakota is the wealthiest county in North America, while South Dakotans are poorer than southern Florida. - the North Dakotan government")

puts out = Dakota.decrypt(code)

ডেমো


এটি আমার বয়সের জন্য বের করতে লাগল। ভাল হয়েছে স্যার!
চৌলেট

8

CJam

এটি এনকোডার:

232375064392749269032321519657657089927649992440902190178063558812627752920796248165803740235420850037801568815744960725761679066919872746899310628404239458 128b:c~

এবং এটি হ'ল ডিকোডার:

364380128038419794871782113211824472986419260504039724627500790722811712426518562428698978399810134993565366126560239807690210155343815201005388714282 128b:c~

এটি এখানে অনলাইনে চেষ্টা করুন

এটি কেবলমাত্র মূলধন সঙ্গে কাজ করে N, Sএবং Dমধ্যেNorth/South Dakota

এসটিডিআইএন থেকে প্রথম ফাংশনে ইনপুট স্ট্রিংটি পাস করুন। এনকোডযুক্ত স্ট্রিংটি পান, ডিকোডড এবং রূপান্তরিত আউটপুট পেতে এটি দ্বিতীয় ফাংশনে পাস করুন।


পুনঃটুইট এর উইন্টারব্যাশ সবই চলছে! (অবাক করে দিয়েছি যে আপনার এমনকি ভোটও বাকি ছিল)
অপটিমাইজার

আমি যেমন বলেছি। হাঃ হাঃ হাঃ.
অপটিমাইজার

"এটি কিছুই করে না। হা হা হা হা!। মূল যুক্তিটি ডিকোডারটিতে থাকে" "; কেন এবং এর .মধ্যে একটি আছে ? HaHaHaHa!The
TheNumberOne

@ বেস্টঅন কারণ ... কারণ।
অপ্টিমাইজার

এই ডিকোডিং চেষ্টা করুন: 364380128038419794871782113211824472986419260504039724627500790722811712426518562428698978399810134993565366126560239807690210155343815201005388714282
TheNumberOne

7

জাভা

আমি আবিষ্কার করেছি যে শূন্য দ্বারা বিভাগ এই প্রোগ্রামে ত্রুটি সৃষ্টি করে না। এই প্রোগ্রামটি স্ট্রিংগুলিকে পুরোপুরি এমন একটি ফর্মের মধ্যে এনকোড করে যা উত্তর ডাকোটান সরকারকে সনাক্ত করা যায় না। উপরে উল্লিখিত অদ্ভুত আচরণের কারণে, এনকোডিং এবং ডিকোডিং সমস্ত ক্ষেত্রে সঠিকভাবে কাজ করতে পারে না।

class Program{

    public static void main(String[] args){
        String input = String.join(" ", args);
        String encode = encode(input);
        System.out.println("Encoded: " + encode);
        System.out.println("Decoded: " + decode(encode));
    }


    static String encode(String input){
        String answer = "";
        input = input.replaceAll("North Dakota", "☃");//Temporarily switch these so that spies
        input = input.replaceAll("South Dakota", "North Dakota");//think the message is from South Dakota
        input = input.replaceAll("☃", "South Dakota");//if they decode the message.
        for(int i =0; i < input.length(); i++){
            answer += (char)(~input.charAt(i)) + "";
        }
        return answer;
    }

    static String decode(String input){
        String answer = "";
        int i;
        for(i=0; i < input.length(); i++){
            answer += (char)(~input.charAt(i)) + "";
        }
        int funnyNumber = (i+\u002f*0)/0;//Division by 0 should cause an error???
        answer.replaceAll("South Dakota", "☃");
        answer.replaceAll("North Dakota", "South Dakota");
        answer.replaceAll("☃", "North Dakota");
        //For some reason, this does not cause errors either:
        funnyNumber = ((500/0)*\u002f+-2);
        return answer;
    }
}

প্রশ্ন: funnyNumberসমান কি করে ?


5
ওহ, জাভা 8 ক্লাসে কোনও স্থির পদ্ধতি যুক্ত joinকরেছিল String? * নীরব উদযাপন! *
জাস্টিন

আহ, আমি দেখছি আপনি সেখানে কি করেছেন। funnyNumberএকটি মান আছে i - 2। যদিও আমি ব্যক্তিগতভাবে অনুভব করি না যে, ইউনিকোডে অক্ষরগুলি লুকানো খুব নীচু করা হয়েছে।
জাস্টিন

@ কুইনকুনস সঠিক, মজার সংখ্যা সমান করে i - 2
TheNumberOne

Cool; আমি কখনই জানতাম না যে \uস্ট্রিংয়ের বাইরে কাজ করে।
Ypnypn

1
@ দেবতা চেষ্টা করুন System.out.println(2+\u002f*2/0*\u002f+-2)
TheNumberOne

2

জাভাস্ক্রিপ্ট

function encrypt (input) {
    input = input.replace(/north d/gi, 'hisdf')
    input = input.replace(/south d/gi, 'hisde')
    var data = input    
    var res = []
    for (var i = 0; i < data.length; i++) {
        res.push(~data.charCodeAt(i))
    }
    return res.toString()
}
function decrypt (input) {
    console.log(input)
    input = input.replace(/-105,-106,-116,-101,-102/g, '-79,-112,-115,-117,-105,-33,-69').replace(/-105,-106,-116,-101,-103/g, '-84,-112,-118,-117,-105,-33,-69 ')
    input = input.split(',')
    var res = ""
    for (var i = 0; i < input.length; i++) {
        var itm = input[i]
        res += String.fromCharCode(~parseInt(itm))
    }
    return res
}
var data = encrypt(prompt('What do you want to encrypt?'))
var data = decrypt(data)
alert(data)

আমার সমাধান সম্ভবত সবচেয়ে চালাক নয়। তবে এটি কাজ করে :) এখানে একটি মূর্খতা

প্রথমে আমি এর north dসাথে hisdfএবং এর south dসাথে প্রতিস্থাপন করব hisde, তারপরে আমি সমস্ত অক্ষরকে কিছুটা উল্টে দিয়েছি এবং এটিকে একটি অ্যারেতে ঠেলাচ্ছি। অ্যারেটি আমি একটি স্ট্রিংয়ে রূপান্তর করি এবং তারপরে উল্টানো অক্ষরের মানগুলি সঠিক মানগুলির সাথে প্রতিস্থাপন করি। যে আগে, আমি মান প্রতিস্থাপন hisdfএবং hisdeসুইচ।


যদি আমার আসল স্ট্রিংটি hisdeকোথাও থাকে?
অপ্টিমাইজার

@ অপ্টিমাইজার ভাল, আমরা এটি ভাঙ্গার চেয়ে ভাল: ডি
কেনার্ড

@ রোজার নোপ, এটি প্রতিস্থাপন করুন north dএবং south d:)
কেনার্ড

কনার্ড হ্যাঁ, আপনি যে পোস্ট করেছিলেন ঠিক তেমনই আমি 'ডি' দেখেছি। / ফেসপাম
রজার

2

এডাব্লুকে: এনকোডার: 165 বাইট, ডিকোডার: 61 বাইট

এনকোডার (উত্তরের পরিবর্তে দক্ষিণ ও এর বিপরীতে প্রতিস্থাপনের দায়িত্বেও):

{a="(th Dakota(ns?)?)";b="\\1";split(gensub("@"a,"Sou"b,"g",gensub("Sou"a,"Nor"b,"g",gensub("Nor"a,"@"b,"g")))" ",y,"");for(i=1;i<length(y);i+=2)printf(y[i+1] y[i])}

ডিকোডার:

{split($0,y,"");for(i=1;i<length(y);i+=2)printf(y[i+1] y[i])}

কিছু পরীক্ষা:

উত্তর ডাকোটা উত্তর আমেরিকার সবচেয়ে ধনী কাউন্টি, অন্যদিকে দক্ষিণ ডাকোটান দক্ষিণ ফ্লোরিডার চেয়ে দরিদ্র। - উত্তর ডাকোটান সরকার

এর মধ্যে এনকোড:

oStu haDokati sht eelalahteitsc uotn yniN RohtA ইমিরাক, hwli eoNtr haDokatsna erp ooer rhtnas uohtre nlFrodi.a- ehS uohtD katonag voremnne t

( প্রকৃতপক্ষে প্রযুক্তি-জ্ঞানবিহীন সরকারের পক্ষে এটি যথেষ্ট পরিমাণে স্ক্র্যাম্ব করা উচিত : ও))

এটি এর পরে ডিকোড হয়:

দক্ষিণ ডাকোটা উত্তর আমেরিকার সবচেয়ে ধনী কাউন্টি, অন্যদিকে দক্ষিণ ডাকোটা দক্ষিণ ফ্লোরিডার চেয়ে দরিদ্র। - দক্ষিণ ডাকোটান সরকার

তবে এটি প্রত্যাশিত ছিল: ও)

দ্রষ্টব্য: উত্তর ডাকোটা, উত্তর ডাকোটান, উত্তর ডাকোটানস, দক্ষিণ ডাকোটা, দক্ষিণ ডাকোটান এবং দক্ষিণ ডাকোটানগুলি সঠিকভাবে মূলধন করতে হবে।


0

সি

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>

#define MASK_B 0xFFFFFFULL
#define MASK_C 0xFFULL
#define ll unsigned long long int
#define transform(a,b) ((a)>(b))?(a):(b)
static const ll magic_num = 0x756f736874726f6e;
#define BITS(a,b) (magic_num&(MASK_C<<((a+b)*8)))>>((a+b)*8)

char * key;
ll keylen;
FILE * file;

char * encrypt(in)
char * in;
{
    char * out;
    size_t length = strlen(in);
    out = (char *) malloc(sizeof (char) * (length + 1));
    for (ll i = 0; i < length; i++)out[i] = key[i % keylen]^in[i];
    out[length] = '\0';
    return out;
}

char * decrypt() {
    size_t len = 0;
    fpos_t pos;
    char * out;
    fgetpos(file, &pos);
    do if (fgetc(file) == EOF) break; else len++; while (1);
    out = (char *) malloc(sizeof (char) * (len + 1));
    fsetpos(file, &pos);
    char chr;
    ll idx = 0;
    do {
        chr = fgetc(file);
        if (chr == EOF) break;
        out[idx++] = chr^key[idx % keylen];
    } while (1);
    out[len] = '\0';
    return out;
}

void * bits(flag, mask)
ll flag;
char * mask;
{
    int dx = (flag & (~0&MASK_C)<<16) ? 5 : 0;
    key[0] = BITS(dx, 0),key[1] = BITS(dx, 1),key[2] = BITS(dx, 2),key[3] = BITS(3, 0),key[4] = BITS(3, 1);
    strncpy(&key[5], " dakota", 8);
    if (flag & ~(MASK_B^MASK_C)) {
        dx = (char)flag & MASK_C;
        if (islower(*mask)) *mask = key[dx - 1];
        else *mask = toupper(key[dx - 1]);
    } else if (!(flag & ~~0))
        return (void *) key;
    return (void*) key[transform(arc4random_uniform(12), 12)];
}

int genkey(in)
char * in;
{
    size_t bound_upper = strlen(in);
    char * index1 = malloc(sizeof(char) * (bound_upper + 1));
    char * index2 = malloc(sizeof(char) * (bound_upper + 1));
    char * index;
    index1 = strcpy(index1,in);
    index2 = strcpy(index2,in);
    ll spice = 0;
    key = (char *) malloc(sizeof (char) * 13);
    char *hits = (char *) malloc(sizeof (char) * bound_upper);
    for (unsigned long j = 0; j < bound_upper; j++){
        hits[j] = 0;
    }

    for (int iter = 0; iter < 2; iter++) {
        ll rotation = 0, flag = MASK_C << (8 * (iter + 1)), flag2 = MASK_C << (8 * (2 - iter)),abs=0;
        char * tmpstr;
        index = iter ? index2 : index1;
        do {
            spice = spice + arc4random_uniform(bound_upper) % bound_upper;
            if (!rotation) {
                tmpstr = strcasestr(index, bits(flag, in));
                if (tmpstr == NULL)
                    goto out;
                index = tmpstr;
            } else {
                bits(flag2 | rotation, index++);
                hits[abs] = iter + 1;
            }
            rotation = (rotation + 1) % (4);
            abs = index - (iter ? index2 : index1);
        } while (flag);
out:
        index = in;
        rotation = 0;
    }
    for(int k = 0;k < bound_upper;k++){
        index[k]=(hits[k]==1?index1[k]:(hits[k] ? index2[k]: index[k]));
        spice += arc4random_uniform(spice)|spice^arc4random();
    }
    free(key);
    spice = spice % bound_upper;
    if (!spice)
        spice = bound_upper;
    keylen = (keylen | spice) & MASK_B;
    key = (char *) malloc(sizeof (char) * (keylen + 1));
    for (ll i = 0; i < keylen; i++)
        key[i] = (arc4random_uniform(126 - ' ') % (126 - ' ')) + ' ';
    key[keylen] = '\0';
    return keylen;
}

int main(argc, argv)
int argc;
char *argv[];
{
    if (argc != 4) return 1;
    char * result;
    if (!strcmp(argv[1], "encrypt")) {
        (void) genkey(argv[2]);
        result = encrypt(argv[2]);
        printf("Decryption Key: '%s'\n", key);
        file = fopen(argv[3], "wb");
        if (file == NULL) printf("Could not open file for writing: %s", argv[3]);
        if (fwrite(result, sizeof (char), strlen(result), file) != strlen(result)) printf("Error occurred while writing ciphertext to file!");
    }
    if (!strcmp(argv[1], "decrypt")) {
        file = fopen(argv[3], "rb");
        if (file == NULL) printf("Could not open file for reading: %s", argv[3]);
        key = argv[2];
        keylen = strlen(argv[2]);
        result = decrypt();
        printf("Plaintext: '%s'\n", result);
    }
    return 0 & fclose(file);
}

এর সাথে সংকলন: gcc -Wall -Wextra -Wno-missing-field-initializers -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings -DGCC_WARN -ansi -pedantic file.c

সর্বাধিক অশুভতার জন্য, পয়েন্টার অপব্যবহারের ড্যাশ সহ কে ওআর সিতে লিখিত।
ওজনি স্প্রেঞ্জা, ভয়ে চেন্ট্রেট।
বুহাইলা রুকগী, নাক্ক্সারńগা বা তধুলক।
এছাড়াও, সবকিছু bitsফাংশন এবং genkeyফাংশনে রয়েছে।

চালান:

[...@...] testing_golf$ ./a.out encrypt "North Dakota is the wealthiest county in North America, while South Dakotans are poorer than southern Florida. - the North Dakotan government" cipher
Decryption Key: ')=1aj3'
[...@...]: testing_golf$ ./a.out decrypt ")=1aj3" cipher
Plaintext: 'South Dakota is the wealthiest county in North America, while North Dakotans are poorer than southern Florida. - the South Dakotan government'

দ্রষ্টব্য: decryptমোডে কীটি নির্দিষ্ট করার সময় , ব্যাকস্ল্যাশ সহ কী-এর কয়েকটি অক্ষর থেকে বাঁচার প্রয়োজন হতে পারে।


-1

জাভাস্ক্রিপ্ট, ES6

মিষ্টি এবং সহজ সঙ্গে শুরু।

এনকোডার:

E=a=>btoa(a)

সঙ্কেতমোচক:

D=a=>atob(a_.replace(/(nor|sou)(th dakota)/gi, (_,x,y)=>({n:"sou",s:"nor",N:"Sou",S:"Nor"})[x[0]]+y)

এটি সর্বশেষতম ফায়ারফক্সে নীচে ব্যবহার করে দেখুন:

E=a=>btoa(a)
D=a=>atob(a).replace(/(nor|sou)(th dakota)/gi, (_,x,y)=>({n:"sou",s:"nor",N:"Sou",S:"Nor"})[x[0]]+y)
var string = prompt()
alert("Encoded string: " + E(string));
alert("Decode string: " + D(E(string)));


3
আপনার কোডটি কাজ করে না, আপনাকে :) এর dakotanসাথে প্রতিস্থাপন করা উচিতdakota
কেনারড

3
@ ক্নার্ড না, আপনার করা উচিত নয়।
অপ্টিমাইজার

হ্যাঁ আপনার উচিত, আপনার কোডের সাথে আপনি কেবল একই প্রতিস্থাপন করবেন North Dakotanনা North Dakotaদক্ষিণের দিকে
কেনার্ড

1
কারণ, আমি মনে করি যে ওপি কোডটি একটি বার্তা এনক্রিপ্ট করতে চেয়েছিল এবং তারপরে অন্য কোডের সাথে এটি ডিক্রিপ্ট করতে পারে।
কেনার্ড

9
এটি আসলেই আন্ডারহ্যান্ড করা হয় না। আমি ডাউনওয়েতে প্রলুব্ধ হব তবে নিশ্চিত নই যে জনপ্রিয়তার প্রতিযোগিতায় এটি দুর্দান্ত?
ক্লদিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.