Here is a way to achieve what you're after:

\documentclass{article}
\usepackage{algorithm,lipsum}
\usepackage[noend]{algpseudocode}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\makeatletter
\newcommand{\setensurelength}{%
\settowidth{\@tempdima}{\algorithmicensure}%
\setlength{\@tempdima}{\dimexpr\linewidth-\@tempdima-1em+\@totalleftmargin}}
\newcommand{\setrequirelength}{%
\settowidth{\@tempdima}{\algorithmicrequire}%
\setlength{\@tempdima}{\dimexpr\linewidth-\@tempdima-1em+\@totalleftmargin}}
\newcommand{\ensurebox}[1]{%
\setensurelength%
\parbox[t]{\@tempdima}{\strut #1\strut}}
\newcommand{\requirebox}[1]{%
\setrequirelength%
\parbox[t]{\@tempdima}{\strut #1\strut}}
\makeatother
\begin{document}
\makeatletter
\begin{algorithm}[t]
\begin{algorithmic}[1]
\Ensure \ensurebox{\lipsum*[2]}
\Require \requirebox{\lipsum*[2]}
\State bla
\end{algorithmic}
\end{algorithm}
\makeatother
\end{document}
The idea is to set the ensure/require blocks inside a \parbox
of fixed width. The fixed width is determined from the list - yes, an algorithmic
environment is actually a list - by removing certain components' lengths. The 1em
is meant to simulate a (large) horizontal space, enough to shorten the paragraph block to fit within the margins.