Разбить строку посимвольно в массив, заменять символы на случайные. По ходу времени двигать слева направо позицию, до которой строка «отгадана» – там уже символы не заменять. Накрученный массиво снова собрать в строку и показать. Эту процедуру расчёта одного «кадра» повторить через небольшую задержку по времени. Повторять до тех пор, пока вся строка не «разгадается».
(function( nick, el) {
var L = nick.length
,cursor = 0
,arr
,timeout
,prob = 0.05 // вероятность "разгадывания" очередной позиции
,rate = 25 // частота "кадров" в секунду
,delay = 1000 / rate
;
function tweak() {
arr = nick.split('');
for(pos = cursor; pos < L; pos++) {
arr[pos] = String.fromCharCode(
1024 + Math.round( (1279 - 1024) * Math.random() )
);
}
el.innerText = arr.join('');
if( cursor === L) return; // done
if( Math.random() < prob) cursor++;
timeout = window.setTimeout( tweak, delay);
}
tweak();
})( "Sergei Sokolov", document.getElementById("effect") )
fiddle