{"id":226,"date":"2018-01-16T22:15:57","date_gmt":"2018-01-16T21:15:57","guid":{"rendered":"http:\/\/wchmurze.cloud\/?p=226"},"modified":"2019-08-18T15:01:04","modified_gmt":"2019-08-18T13:01:04","slug":"generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1","status":"publish","type":"post","link":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/","title":{"rendered":"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1"},"content":{"rendered":"<p>Wyobra\u017amy sobie sytuacj\u0119, \u017ce mamy w bazie danych mn\u00f3stwo wra\u017cliwych informacji, numery PESEL, adresy e-mail, numery telefon\u00f3w, numery dokument\u00f3w to\u017csamo\u015bci, konta bankowe.<\/p>\n<p>Te dane nale\u017cy tak anonimizowa\u0107, by\u00a0 uzyskany rezultat nie dawa\u0142\u00a0 mo\u017cliwo\u015bci\u00a0 odtworzenia oryginalnej warto\u015bci i jednocze\u015bnie spe\u0142nia\u0142, je\u017celi trzeba regu\u0142y poprawno\u015bci danego wzorca. Dotyczy to m.in. d\u0142ugo\u015bci, formatu i sumy kontrolnej.<\/p>\n<p>&nbsp;<\/p>\n<p>Zacznijmy na przyk\u0142adzie numeru dowodu osobistego w formacie ABC123456.\u00a0 Czy jest on poprawny ?<\/p>\n<p>Dla tych, kt\u00f3rzy przyzwyczaili si\u0119 do sumy kontrolnej na ostatnim miejscu wzorca dziwne mo\u017ce by\u0107 to, \u017ce suma kontrolna to pierwsza z cyfr (czwarty element).<\/p>\n<pre lang=\"SQL\">\r\ndeclare @Numer varchar(20)\r\ndeclare @numerPoprawny varchar(20)\r\nset @Numer='ABC123456'\r\n\r\n\r\nselect @numerPoprawny= (\r\nleft(@Numer,3)\r\n\t\t\t+\r\n\t\t\tconvert(varchar(1),((7*ascii(substring(@Numer,1,1))-55)+\r\n\t\t\t(3*ascii(substring(@Numer,2,1))-55)+\r\n\t\t\t(1*ascii(substring(@Numer,3,1))-55)+\r\n\t\t\t-- tu jest suma kontrolna \r\n\t\t\t7*convert(int,(substring(@Numer,5,1)))+\r\n\t\t\t3*convert(int,(substring(@Numer,6,1)))+\r\n\t\t\t1*convert(int,(substring(@Numer,7,1)))+\r\n\t\t\t7*convert(int,(substring(@Numer,8,1)))+\r\n\t\t\t3*convert(int,(substring(@Numer,9,1))) ) % 10)\r\n\t\t\t-- tu jest suma kontrolna\r\n\t\t\t+\r\n\t\t\tright(@Numer,5)\r\n\t\t\t) \r\n\r\nselect @Numer as [@Numer],@numerPoprawny as [@numerPoprawny]\r\n<\/pre>\n<p>Powy\u017csze zapytanie zwr\u00f3ci jako poprawny numer dowodu warto\u015b\u0107 <strong>ABC523456<\/strong>, czyli 5 jest poprawn\u0105 cyfr\u0105 kontroln\u0105, a nie 1.<\/p>\n<p>1. Na pocz\u0105tku wygenerujmy\u00a0 1 mln sztucznych dowod\u00f3w osobistych.<\/p>\n<pre lang=\"SQL\">use AdventureWorks2012\r\n\r\nIF OBJECT_ID('AdventureWorks2012.dbo.DokumentyOsobiste') is null\r\nBEGIN\r\ncreate table dbo.DokumentyOsobiste\r\n(\r\nlp int not null primary key,\r\nnumerDokumentu varchar(50),\r\nNumerDokumentuPoprawny varchar(50)\r\n)\r\nEND\r\n\r\nELSE\r\nBEGIN\r\n   truncate TABLE dbo.DokumentyOsobiste\r\nEND  \r\n\r\n\r\n ;WITH\r\n  Poziom0 as (select 1 as C union all select 1), --2 rows\r\n  Poziom1 as (select 1 as C from Poziom0 as A, Poziom0 as B),--4 rows\r\n  Poziom2 as (select 1 as C from Poziom1 as A, Poziom1 as B),--16 rows\r\n  Poziom3 as (select 1 as C from Poziom2 as A, Poziom2 as B),--256 rows\r\n  Poziom4 as (select 1 as C from Poziom3 as A, Poziom3 as B),--65536 rows\r\n  Poziom5 as (select 1 as C from Poziom4 as A, Poziom4 as B),--4294967296 rows\r\n  Dokumenty  as (select row_number() over(order by C) as Lp, \r\n\t char(right(CAST(CRYPT_GEN_RANDOM(4) AS INT),1)+65)\r\n\t+char(right(CAST(CRYPT_GEN_RANDOM(4) AS INT),1)+65)\r\n\t+char(right(CAST(CRYPT_GEN_RANDOM(4) AS INT),1)+65)\r\n\t+RIGHT(CAST(CRYPT_GEN_RANDOM(4) AS INT),6) as NumerDokumentu\r\n  \r\n   from Poziom5)\r\n\r\n\r\n    insert into   dbo.DokumentyOsobiste (lp,NumerDokumentu,NumerDokumentuPoprawny)\r\n\r\n    SELECT lp,NumerDokumentu,\r\n\t\t(\r\n\t\t\tleft(NumerDokumentu,3)\r\n\t\t\t+\r\n\t\t\tconvert(varchar(1),((7*ascii(substring(NumerDokumentu,1,1))-55)+\r\n\t\t\t(3*ascii(substring(NumerDokumentu,2,1))-55)+\r\n\t\t\t(1*ascii(substring(NumerDokumentu,3,1))-55)+\r\n\t\t\t-- tu jest suma kontrolna \r\n\t\t\t7*convert(int,(substring(NumerDokumentu,5,1)))+\r\n\t\t\t3*convert(int,(substring(NumerDokumentu,6,1)))+\r\n\t\t\t1*convert(int,(substring(NumerDokumentu,7,1)))+\r\n\t\t\t7*convert(int,(substring(NumerDokumentu,8,1)))+\r\n\t\t\t3*convert(int,(substring(NumerDokumentu,9,1))) ) % 10)\r\n\t\t\t-- tu jest suma kontrolna\r\n\t\t\t+\r\n\t\t\tright(NumerDokumentu,5)\r\n\t\t\t) as NumerDokumentuPoprawny\r\n        FROM Dokumenty\r\n        WHERE lp <= 1000000-- limit\r\n\r\n\r\n<\/pre>\n<p>W posobny spos\u00f3b mo\u017cna uzyska\u0107 inne typy danych wra\u017cliwych<\/p>\n<p>Przyk\u0142adowy generator numer\u00f3w PESEL<\/p>\n<pre lang=\"SQL\">;WITH\r\n Poziom0 as (select 1 as C union all select 1), --2 rows\r\n Poziom1 as (select 1 as C from Poziom0 as A, Poziom0 as B),--4 rows\r\n Poziom2 as (select 1 as C from Poziom1 as A, Poziom1 as B),--16 rows\r\n Poziom3 as (select 1 as C from Poziom2 as A, Poziom2 as B),--256 rows\r\n Poziom4 as (select 1 as C from Poziom3 as A, Poziom3 as B),--65536 rows\r\n Poziom5 as (select 1 as C from Poziom4 as A, Poziom4 as B),--4294967296 rows\r\n PESELE  as (select row_number() over(order by C) as Lp,\r\n   RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)  -- rok\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 12) + 1,2),2) -- miesiac\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 28) + 1,2),2) --dzien\r\n   +RIGHT(CAST(CRYPT_GEN_RANDOM(4) AS INT),5) -- pozostala czesc\r\n   as PESELSurowy\r\n  \r\n  from Poziom5)\r\n  select lp,left(PESELSurowy,10)+\r\n   \r\n convert(varchar(1), ((\r\n   Convert(int,substring(PESELSurowy,1,1))*9\r\n   +Convert(int,substring(PESELSurowy,2,1))*7\r\n   +Convert(int,substring(PESELSurowy,3,1))*3\r\n   +Convert(int,substring(PESELSurowy,4,1))*1\r\n   +Convert(int,substring(PESELSurowy,5,1))*9\r\n   +Convert(int,substring(PESELSurowy,6,1))*7\r\n   +Convert(int,substring(PESELSurowy,7,1))*3\r\n   +Convert(int,substring(PESELSurowy,8,1))*1\r\n   +Convert(int,substring(PESELSurowy,9,1))*9\r\n   +Convert(int,substring(PESELSurowy,10,1))*7\r\n   )\r\n    % 10))\r\n   as PESEL ,\r\n    (\r\n        (Convert(int,substring(PESELSurowy,1,1))*9\r\n       +Convert(int,substring(PESELSurowy,2,1))*7\r\n       +Convert(int,substring(PESELSurowy,3,1))*3\r\n       +Convert(int,substring(PESELSurowy,4,1))*1\r\n       +Convert(int,substring(PESELSurowy,5,1))*9\r\n       +Convert(int,substring(PESELSurowy,6,1))*7\r\n       +Convert(int,substring(PESELSurowy,7,1))*3\r\n       +Convert(int,substring(PESELSurowy,8,1))*1\r\n       +Convert(int,substring(PESELSurowy,9,1))*9\r\n       +Convert(int,substring(PESELSurowy,10,1))*7\r\n       )\r\n    % 10) as SumaKontrolna\r\n    \r\n   from PESELE\r\n  where lp<=1000000;--limit \r\n<\/pre>\n<p>Generator polskich numer\u00f3w NRB.<\/p>\n<pre lang=\"SQL\">  ;WITH\r\n Poziom0 as (select 1 as C union all select 1), --2 rows\r\n Poziom1 as (select 1 as C from Poziom0 as A, Poziom0 as B),--4 rows\r\n Poziom2 as (select 1 as C from Poziom1 as A, Poziom1 as B),--16 rows\r\n Poziom3 as (select 1 as C from Poziom2 as A, Poziom2 as B),--256 rows\r\n Poziom4 as (select 1 as C from Poziom3 as A, Poziom3 as B),--65536 rows\r\n Poziom5 as (select 1 as C from Poziom4 as A, Poziom4 as B),--4294967296 rows\r\n NRB  as (select row_number() over(order by C) as Lp,\r\n \r\n   RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   +RIGHT('0'+Convert(varchar(2),ABS(Checksum(NewID()) % 99) + 1,2),2)\r\n   as NRBsurowy\r\n \r\n \r\n  from Poziom5)\r\n \r\n  select lp,right('00'+convert(varchar(2),98-convert(numeric(30,0),right(NRBsurowy,24)+'252100')%97),2)+right(NRBsurowy,24) as NRB from NRB\r\n  where lp<=1000000;\r\n  \r\n<\/pre>\n<p>Budowa mechanizmu generowania danych jest szablonowa. Wykorzystywany jest CTE (Common Table Expression) w taki spos\u00f3b, \u017ce<br \/>\na) za pomoc\u0105 kilku obiekt\u00f3w (aliasy PoziomX) mo\u017cna kontrolowa\u0107 liczb\u0119 zwracanych rekord\u00f3w, ograniczenie dla pi\u0119ciu poziom\u00f3w jest liczb\u0105 rz\u0119du 2 do pot\u0119gi 32 (ok 4 mld),<br \/>\nb) budowany jest napis o formacie zgodnych z danym typem numeru (d\u0142ugo\u015b\u0107, format) ale bez poprawnej sumy kontrolnej, nazywamy postaci\u0105 surow\u0105<br \/>\nc)posta\u0107 surowa jest dynamicznie podmieniana w taki spos\u00f3b, \u017ce podmianiana jest cz\u0119\u015b\u0107 w tym miejsciu, gdzie wyst\u0119puje suma kontrolna, czasem jest to poczatek, \u015brodek lub koniec napisu.<\/p>\n<p>2. Za\u0142\u00f3\u017cmy, \u017ce te wygenerowane dokumenty\/numery\/konta s\u0105 prawdziwe. Jak je zaktualizowa\u0107, tak by wygl\u0105da\u0142y na poprawne i spe\u0142nia\u0142y regu\u0142y? Wa\u017cne jest te\u017c to, by generowa\u0107 nowe warto\u015bci optymalnie i w miar\u0119 mo\u017cliwo\u015bci prostym kodem t-sql.<br \/>\nZacznijmy od budowy pomocniczej perpektywy<\/p>\n<pre lang=\"SQL\">CREATE VIEW dbo.VGenerateCrypts\r\n\r\nAS\r\n\r\nSELECT NEWID() AS CryptUID,\r\nRIGHT(CAST(CRYPT_GEN_RANDOM(4) AS INT),6) as Crypt1,\r\nRIGHT(CAST(CRYPT_GEN_RANDOM(4) AS INT),6) as Crypt2,\r\nRIGHT(CAST(CRYPT_GEN_RANDOM(4) AS INT),6) as Crypt3,\r\nRIGHT(CAST(CRYPT_GEN_RANDOM(4) AS INT),6) as Crypt4,\r\n1 + CONVERT(INT, (99-1+1) * RAND()) as  CryptYear,\r\n1 + CONVERT(INT, (12-1+1) * RAND()) as  CryptMonth,\r\n1 + CONVERT(INT, (28-1+1) * RAND()) as  CryptDay\r\n<\/pre>\n<p>Widok zwraca jeden rekord, za ka\u017cdym razie z innymi warto\u015bciami.<\/p>\n<pre lang=\"SQL\">select * from dbo.VGenerateCrypts;\r\n<\/pre>\n<table width=\"1017\">\n<tbody>\n<tr>\n<td width=\"276\">CryptUID<\/td>\n<td width=\"101\">Crypt1<\/td>\n<td width=\"100\">Crypt2<\/td>\n<td width=\"104\">Crypt3<\/td>\n<td width=\"113\">Crypt4<\/td>\n<td width=\"140\">CryptYear<\/td>\n<td width=\"120\">CryptMonth<\/td>\n<td width=\"63\">CryptDay<\/td>\n<\/tr>\n<tr>\n<td>F463175E-DD3C-479E-834F-BB850552FF56<\/td>\n<td>189347<\/td>\n<td>549814<\/td>\n<td>23651<\/td>\n<td>661922<\/td>\n<td>10<\/td>\n<td>5<\/td>\n<td>11<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Do czego ma s\u0142u\u017cy\u0107 ten widok ? Funkcja systemowa RAND() nie mo\u017ce zosta\u0107 u\u017cyta wewn\u0105trz funkcji skalarnej, takie mamy ograniczenie silnika. A takie w\u0142a\u015bnie funkcje b\u0119d\u0105 podstaw\u0105 procesu podmiany danych.O tym napisz\u0119 w drugiej cz\u0119\u015bci.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wyobra\u017amy sobie sytuacj\u0119, \u017ce mamy w bazie danych mn\u00f3stwo wra\u017cliwych informacji, numery PESEL, adresy e-mail, numery telefon\u00f3w, numery dokument\u00f3w to\u017csamo\u015bci, konta bankowe. Te dane nale\u017cy tak anonimizowa\u0107, by\u00a0 uzyskany rezultat nie dawa\u0142\u00a0 mo\u017cliwo\u015bci\u00a0 odtworzenia oryginalnej warto\u015bci i jednocze\u015bnie spe\u0142nia\u0142, je\u017celi &hellip; <a href=\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/\">Continued<\/a><\/p>\n","protected":false},"author":1,"featured_media":1073,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[14,13,2],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1 - W chmurze o chmurze i nie tylko<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1 - W chmurze o chmurze i nie tylko\" \/>\n<meta property=\"og:description\" content=\"Wyobra\u017amy sobie sytuacj\u0119, \u017ce mamy w bazie danych mn\u00f3stwo wra\u017cliwych informacji, numery PESEL, adresy e-mail, numery telefon\u00f3w, numery dokument\u00f3w to\u017csamo\u015bci, konta bankowe. Te dane nale\u017cy tak anonimizowa\u0107, by\u00a0 uzyskany rezultat nie dawa\u0142\u00a0 mo\u017cliwo\u015bci\u00a0 odtworzenia oryginalnej warto\u015bci i jednocze\u015bnie spe\u0142nia\u0142, je\u017celi &hellip; Continued\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/\" \/>\n<meta property=\"og:site_name\" content=\"W chmurze o chmurze i nie tylko\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-16T21:15:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-18T13:01:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wchmurze.cloud\/wp-content\/uploads\/2018\/04\/sql-glass.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"467\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"djkormo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"djkormo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/\"},\"author\":{\"name\":\"djkormo\",\"@id\":\"https:\/\/wchmurze.cloud\/#\/schema\/person\/9832cc6f86f99f541d983d2b8d60f323\"},\"headline\":\"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1\",\"datePublished\":\"2018-01-16T21:15:57+00:00\",\"dateModified\":\"2019-08-18T13:01:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/\"},\"wordCount\":395,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/wchmurze.cloud\/#\/schema\/person\/9832cc6f86f99f541d983d2b8d60f323\"},\"articleSection\":[\"implementacja\",\"RODO\",\"t-sql\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/\",\"url\":\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/\",\"name\":\"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1 - W chmurze o chmurze i nie tylko\",\"isPartOf\":{\"@id\":\"https:\/\/wchmurze.cloud\/#website\"},\"datePublished\":\"2018-01-16T21:15:57+00:00\",\"dateModified\":\"2019-08-18T13:01:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/wchmurze.cloud\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wchmurze.cloud\/#website\",\"url\":\"https:\/\/wchmurze.cloud\/\",\"name\":\"W chmurze o chmurze i nie tylko\",\"description\":\"W chmurze o chmurze i nie tylko\",\"publisher\":{\"@id\":\"https:\/\/wchmurze.cloud\/#\/schema\/person\/9832cc6f86f99f541d983d2b8d60f323\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wchmurze.cloud\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pl-PL\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/wchmurze.cloud\/#\/schema\/person\/9832cc6f86f99f541d983d2b8d60f323\",\"name\":\"djkormo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/wchmurze.cloud\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/14a901b808871fa98086ae259c45d646?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/14a901b808871fa98086ae259c45d646?s=96&d=mm&r=g\",\"caption\":\"djkormo\"},\"logo\":{\"@id\":\"https:\/\/wchmurze.cloud\/#\/schema\/person\/image\/\"},\"url\":\"https:\/\/wchmurze.cloud\/index.php\/author\/djkormo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1 - W chmurze o chmurze i nie tylko","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/","og_locale":"pl_PL","og_type":"article","og_title":"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1 - W chmurze o chmurze i nie tylko","og_description":"Wyobra\u017amy sobie sytuacj\u0119, \u017ce mamy w bazie danych mn\u00f3stwo wra\u017cliwych informacji, numery PESEL, adresy e-mail, numery telefon\u00f3w, numery dokument\u00f3w to\u017csamo\u015bci, konta bankowe. Te dane nale\u017cy tak anonimizowa\u0107, by\u00a0 uzyskany rezultat nie dawa\u0142\u00a0 mo\u017cliwo\u015bci\u00a0 odtworzenia oryginalnej warto\u015bci i jednocze\u015bnie spe\u0142nia\u0142, je\u017celi &hellip; Continued","og_url":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/","og_site_name":"W chmurze o chmurze i nie tylko","article_published_time":"2018-01-16T21:15:57+00:00","article_modified_time":"2019-08-18T13:01:04+00:00","og_image":[{"width":700,"height":467,"url":"https:\/\/wchmurze.cloud\/wp-content\/uploads\/2018\/04\/sql-glass.jpg","type":"image\/jpeg"}],"author":"djkormo","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"djkormo","Szacowany czas czytania":"2 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/#article","isPartOf":{"@id":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/"},"author":{"name":"djkormo","@id":"https:\/\/wchmurze.cloud\/#\/schema\/person\/9832cc6f86f99f541d983d2b8d60f323"},"headline":"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1","datePublished":"2018-01-16T21:15:57+00:00","dateModified":"2019-08-18T13:01:04+00:00","mainEntityOfPage":{"@id":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/"},"wordCount":395,"commentCount":1,"publisher":{"@id":"https:\/\/wchmurze.cloud\/#\/schema\/person\/9832cc6f86f99f541d983d2b8d60f323"},"articleSection":["implementacja","RODO","t-sql"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/","url":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/","name":"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1 - W chmurze o chmurze i nie tylko","isPartOf":{"@id":"https:\/\/wchmurze.cloud\/#website"},"datePublished":"2018-01-16T21:15:57+00:00","dateModified":"2019-08-18T13:01:04+00:00","breadcrumb":{"@id":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wchmurze.cloud\/index.php\/2018\/01\/16\/generowanie-losowych-odpowiednikow-dla-danych-wrazliwych-dla-rodo-czesc-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/wchmurze.cloud\/"},{"@type":"ListItem","position":2,"name":"Generowanie losowych odpowiednik\u00f3w dla danych wra\u017cliwych dla RODO . Cz\u0119\u015b\u0107 1"}]},{"@type":"WebSite","@id":"https:\/\/wchmurze.cloud\/#website","url":"https:\/\/wchmurze.cloud\/","name":"W chmurze o chmurze i nie tylko","description":"W chmurze o chmurze i nie tylko","publisher":{"@id":"https:\/\/wchmurze.cloud\/#\/schema\/person\/9832cc6f86f99f541d983d2b8d60f323"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wchmurze.cloud\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pl-PL"},{"@type":["Person","Organization"],"@id":"https:\/\/wchmurze.cloud\/#\/schema\/person\/9832cc6f86f99f541d983d2b8d60f323","name":"djkormo","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/wchmurze.cloud\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/14a901b808871fa98086ae259c45d646?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/14a901b808871fa98086ae259c45d646?s=96&d=mm&r=g","caption":"djkormo"},"logo":{"@id":"https:\/\/wchmurze.cloud\/#\/schema\/person\/image\/"},"url":"https:\/\/wchmurze.cloud\/index.php\/author\/djkormo\/"}]}},"_links":{"self":[{"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/posts\/226"}],"collection":[{"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/comments?post=226"}],"version-history":[{"count":33,"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/posts\/226\/revisions"}],"predecessor-version":[{"id":282,"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/posts\/226\/revisions\/282"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/media\/1073"}],"wp:attachment":[{"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/media?parent=226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/categories?post=226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wchmurze.cloud\/index.php\/wp-json\/wp\/v2\/tags?post=226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}